{"servers":[{"url":"/api"}],"info":{"title":"Yodu Public API","version":"1.0.0","description":"Curated public API for a Yodu workspace. Authenticate every request with a workspace API key: `Authorization: Bearer yodu_mcp_…` (create one at /settings/mcp). The key is scoped to one workspace — no request takes an organization id."},"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"A Yodu workspace API key (prefix `yodu_mcp_`)."}}},"openapi":"3.1.1","paths":{"/workspace":{"get":{"operationId":"workspace.get","summary":"Get the workspace this API key belongs to","tags":["Workspace"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/workspace/overview":{"get":{"operationId":"workspace.overview","summary":"Recent workspace activity (agents, tasks, needs-attention)","tags":["Workspace"],"parameters":[{"name":"days","in":"query","schema":{"type":"integer","minimum":1,"maximum":90},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/agents":{"get":{"operationId":"agents.list","summary":"List the workspace's agents","tags":["Agents"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/memory":{"get":{"operationId":"memory.list","summary":"List memory documents","tags":["Memory"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"post":{"operationId":"memory.create","summary":"Create a memory document","tags":["Memory"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scope":{"enum":["COMPANY_PROFILE","SHARED_KNOWLEDGE_BASE","AUDIT_EVIDENCE"],"type":"string"},"title":{"type":"string","minLength":1,"maxLength":220},"summary":{"type":"string","maxLength":20000},"body":{"type":"string","maxLength":120000}},"required":["scope","title"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/memory/{memoryDocumentId}":{"get":{"operationId":"memory.get","summary":"Read one memory document","tags":["Memory"],"parameters":[{"name":"memoryDocumentId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"patch":{"operationId":"memory.update","summary":"Update a memory document","tags":["Memory"],"parameters":[{"name":"memoryDocumentId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":220},"summary":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":120000},{"type":"null"}]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/tasks":{"get":{"operationId":"tasks.list","summary":"List board tasks","tags":["Tasks"],"parameters":[{"name":"agentId","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"statuses","in":"query","schema":{"type":"array","maxItems":8,"items":{"enum":["TODO","IN_PROGRESS","BLOCKED","REVIEW","DONE","CANCELLED","BACKLOG","TRIAGE"],"type":"string"}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"priorities","in":"query","schema":{"type":"array","maxItems":8,"items":{"type":"string"}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"label","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"post":{"operationId":"tasks.create","summary":"Create a task","tags":["Tasks"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"summary":{"type":"string"},"agentId":{"type":"string"},"status":{"enum":["TODO","IN_PROGRESS","BLOCKED","REVIEW","DONE","CANCELLED","BACKLOG","TRIAGE"],"type":"string"},"priority":{"type":"string","minLength":1,"maxLength":40},"labels":{"type":"array","maxItems":12,"items":{"type":"string"}}},"required":["title"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/tasks/{taskId}":{"get":{"operationId":"tasks.get","summary":"Get one task","tags":["Tasks"],"parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"patch":{"operationId":"tasks.update","summary":"Update a task","tags":["Tasks"],"parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"summary":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","minLength":1,"maxLength":40},"labels":{"type":"array","maxItems":12,"items":{"type":"string"}},"status":{"enum":["TODO","IN_PROGRESS","BLOCKED","REVIEW","DONE","CANCELLED","BACKLOG","TRIAGE"],"type":"string"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/tasks/{taskId}/move":{"post":{"operationId":"tasks.move","summary":"Move a task to a board column","tags":["Tasks"],"parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["TODO","IN_PROGRESS","BLOCKED","REVIEW","DONE","CANCELLED","BACKLOG","TRIAGE"],"type":"string"},"afterTaskId":{"type":"string"},"beforeTaskId":{"type":"string"}},"required":["status"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/tasks/{taskId}/comments":{"post":{"operationId":"tasks.comment","summary":"Add a comment to a task","tags":["Tasks"],"parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":20000},"parentId":{"type":"string"}},"required":["body"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/channels/{channelId}/messages":{"get":{"operationId":"channels.messages","summary":"List messages in an agent channel (newest first, paginated)","tags":["Channels"],"parameters":[{"name":"channelId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"before","in":"query","schema":{"type":"string","format":"date-time","x-native-type":"date"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/channels/{channelId}/activity":{"get":{"operationId":"channels.activity","summary":"Live runtime activity for an agent channel","tags":["Channels"],"parameters":[{"name":"channelId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/channels/{channelId}/mark-read":{"post":{"operationId":"channels.markRead","summary":"Mark an agent channel as read for the key's user","tags":["Channels"],"parameters":[{"name":"channelId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/approvals":{"get":{"operationId":"approvals.list","summary":"List approval requests","tags":["Approvals"],"parameters":[{"name":"statuses","in":"query","schema":{"type":"array","maxItems":5,"items":{"enum":["PENDING","APPROVED","REJECTED","EXPIRED","CANCELLED"],"type":"string"}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/scheduled-jobs":{"get":{"operationId":"schedules.list","summary":"List the workspace's scheduled jobs","tags":["Schedules"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/tools":{"get":{"operationId":"tools.list","summary":"List the workspace's connected tool integrations","tags":["Tools"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/tool-catalog":{"get":{"operationId":"tools.catalog","summary":"List the available tools/apps that can be connected","tags":["Tools"],"parameters":[{"name":"search","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"category","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/runtime/health":{"get":{"operationId":"runtime.health","summary":"Latest runtime health snapshot + file-sync freshness","tags":["Runtime"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/runtime/state":{"get":{"operationId":"runtime.state","summary":"Current runtime state (containers, agents, connection)","tags":["Runtime"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}}}}