{"openapi":"3.1.0","info":{"title":"Trace by Oronzo Public API","version":"1.0.0","description":"Tenant-isolated API for work tracking. API keys determine the workspace; organizationId is never accepted."},"servers":[{"url":"https://trace.oronzo.io/api/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/me":{"get":{"summary":"Inspect the current API key and workspace","tags":["Identity"],"responses":{"200":{"description":"API identity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/work-items":{"get":{"summary":"List work items","tags":["Work items"],"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"type","in":"query","schema":{"type":"string","enum":["defect","task"]}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"priority","in":"query","schema":{"type":"string","enum":["critical","high","medium","low"]}},{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"moduleId","in":"query","schema":{"type":"string","maxLength":100}},{"name":"submoduleId","in":"query","schema":{"type":"string","maxLength":100}},{"name":"search","in":"query","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"A cursor-paginated work-item collection"}}},"post":{"summary":"Create a work item","tags":["Work items"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkItemInput"}}}},"responses":{"201":{"description":"Created or safely replayed"},"409":{"description":"Idempotency conflict"}}}},"/work-items/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^(DEF|TASK)-"}}],"get":{"summary":"Get a work item","tags":["Work items"],"responses":{"200":{"description":"Work item"},"404":{"description":"Not found"}}},"patch":{"summary":"Update a work item with optimistic concurrency","tags":["Work items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WorkItemInput"},{"type":"object","required":["version"],"properties":{"version":{"type":"integer","minimum":1}}}]}}}},"responses":{"200":{"description":"Updated"},"409":{"description":"Version conflict"}}}},"/projects":{"get":{"summary":"List projects","tags":["Projects"],"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"Project collection"}}}},"/customer-requests":{"get":{"summary":"List customer requests for a workspace","tags":["Customer requests"],"parameters":[{"name":"workspaceId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Customer request collection"}}},"post":{"summary":"Ingest customer evidence from API, email, forms, Slack, Teams, MCP, or support systems","tags":["Customer requests"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerRequestInput"}}}},"responses":{"201":{"description":"Ingested or safely replayed"},"409":{"description":"Idempotency conflict"}}}},"/release-deployments":{"get":{"summary":"List CI/CD deployments and changelog entries","tags":["Release pipelines"],"parameters":[{"name":"workspaceId","in":"query","required":true,"schema":{"type":"string","maxLength":100}},{"name":"pipelineId","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Deployment collection"}}},"post":{"summary":"Record a continuous or scheduled release deployment from CI/CD","tags":["Release pipelines"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentInput"}}}},"responses":{"201":{"description":"Deployment recorded, linked work transitioned, and changelog updated"},"409":{"description":"Idempotency or terminal-state conflict"}}}},"/security-report":{"get":{"summary":"Generate a tenant security report","tags":["Security"],"responses":{"200":{"description":"Security posture and recent audit summary"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Trace API key"}},"parameters":{"Limit":{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},"Cursor":{"name":"cursor","in":"query","schema":{"type":"string"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"A unique printable value retained for 24 hours.","schema":{"type":"string","maxLength":200}}},"schemas":{"Envelope":{"type":"object","required":["data","meta"],"properties":{"data":{},"meta":{"type":"object","required":["requestId","apiVersion"],"properties":{"requestId":{"type":"string"},"apiVersion":{"const":"v1"}}}}},"WorkItemInput":{"type":"object","additionalProperties":false,"required":["type","title","description","status","priority","assignee","tags"],"properties":{"type":{"type":"string","enum":["defect","task"]},"title":{"type":"string","maxLength":160},"description":{"type":"string","maxLength":5000},"status":{"type":"string"},"priority":{"type":"string","enum":["critical","high","medium","low"]},"severity":{"type":["string","null"],"enum":["S1","S2","S3","S4",null]},"assignee":{"type":"string","maxLength":120},"dueDate":{"type":["string","null"],"format":"date"},"tags":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":32}},"linkedId":{"type":["string","null"]},"projectId":{"type":["string","null"]},"moduleId":{"type":["string","null"],"maxLength":100},"submoduleId":{"type":["string","null"],"maxLength":100},"workflowId":{"type":["string","null"]},"releaseId":{"type":["string","null"]},"milestoneId":{"type":["string","null"]},"cycleId":{"type":["string","null"]},"estimatePoints":{"type":"integer","minimum":0,"maximum":1000},"customFields":{"type":"object","additionalProperties":{"type":["string","number","boolean","null"]}},"version":{"type":"integer","minimum":1,"description":"Required for updates; ignored on create."}}},"CustomerRequestInput":{"type":"object","additionalProperties":false,"required":["workspaceId","customerId","summary"],"properties":{"workspaceId":{"type":"string","maxLength":100},"customerId":{"type":"string","maxLength":100},"projectId":{"type":["string","null"],"maxLength":100},"workItemId":{"type":["string","null"],"maxLength":100},"source":{"type":"string","enum":["manual","email","form","slack","teams","api","mcp","support"]},"sourceUrl":{"type":["string","null"],"format":"uri","maxLength":2000},"contactEmail":{"type":["string","null"],"format":"email"},"summary":{"type":"string","maxLength":2000},"important":{"type":"boolean","default":false},"status":{"type":"string","enum":["new","reviewing","planned","shipped","declined"],"default":"new"}}},"ReleaseDeploymentInput":{"type":"object","additionalProperties":false,"required":["workspaceId","pipelineId","commitSha"],"properties":{"workspaceId":{"type":"string","maxLength":100},"pipelineId":{"type":"string","maxLength":100},"deploymentId":{"type":["string","null"],"maxLength":100},"releaseName":{"type":"string","maxLength":120},"commitSha":{"type":"string","pattern":"^[a-fA-F0-9]{7,64}$"},"status":{"type":"string","enum":["queued","in_progress","succeeded","failed"],"default":"succeeded"},"targetDate":{"type":["string","null"],"format":"date"},"workItemIds":{"type":"array","maxItems":100,"items":{"type":"string","maxLength":100}},"notes":{"type":"string","maxLength":20000},"sourceUrl":{"type":["string","null"],"format":"uri","maxLength":2000}}}}}}