{"openapi":"3.1.0","info":{"title":"welance/directory agent API","version":"1.0.0","description":"Read-only access to the welance/directory for agents acting on behalf of a company that needs a small software team. The human is the principal. Any agent may read the directory, match a draft brief against the anonymous team board and prepare the brief. With the person's consent — connecting welance/directory to their assistant — an agent may also read and propose: read their own profile, teams, briefs, pitches and bookings, and store proposals they review. Publishing, inviting teams and the €30 meeting handshake are always the person's own clicks on welance.com/directory; no agent scope can do them.","contact":{"url":"https://welance.com/directory/agents"},"license":{"name":"Public read","url":"https://welance.com/directory/terms"}},"servers":[{"url":"https://welance.com/api/agent/v1"}],"paths":{"/":{"get":{"operationId":"getManifest","summary":"What the directory is, who it is for, and where everything lives","responses":{"200":{"description":"The manifest","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/briefs":{"get":{"operationId":"listBriefs","summary":"Open briefs and the archive of delivered projects, anonymised","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["open","vetting","executed"]}},{"name":"tangible","in":"query","schema":{"type":"boolean"},"description":"Only briefs whose problem lives in the physical world"}],"responses":{"200":{"description":"The public briefs","content":{"application/json":{"schema":{"type":"object","properties":{"briefs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string"},"title":{"type":["string","null"]},"intro":{"type":["string","null"]},"sector":{"type":["string","null"]},"location":{"type":["string","null"]},"budget":{"type":["string","null"]},"kind":{"type":["string","null"]},"languages_required":{"type":"array","items":{"type":"string"}},"tangible":{"type":"object","properties":{"tangible":{"type":"boolean"},"domains":{"type":"array","items":{"type":"string"}}}},"url":{"type":"string"}}}}}}}}}}}},"/teams":{"get":{"operationId":"previewTeams","summary":"A protected preview of the anonymous board: two vetted teams, rotating daily, and the size of the supply — never the whole board, never names. Send a brief to /match for the teams that fit it.","responses":{"200":{"description":"The protected team preview","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/match":{"post":{"operationId":"matchBrief","summary":"Match a draft brief against the eligible anonymous teams: only teams the brief matches, the defaults it inferred, and a prefilled \"Start this brief\" link. Stores nothing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["brief"],"properties":{"brief":{"type":"string","description":"The draft brief, markdown or plain text, 80–20000 characters"},"title":{"type":"string"},"language":{"type":"string","description":"Language the team must speak, ISO 639-1"}}}}}},"responses":{"200":{"description":"Derived fields, the shortlist and the human next step","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Brief missing or outside the length limits","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/rules":{"get":{"operationId":"getRules","summary":"The public rule catalogue a brief is scored against","responses":{"200":{"description":"The catalogue","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}