{"openapi":"3.1.0","info":{"title":"Tickably API","version":"1.0.0","description":"User-scoped REST API for companies, invitations, project members, tickets, replies, todos, notes, statuses and phases."},"servers":[{"url":"https://api.tickably.com/v1"}],"security":[{"ApiKey":[],"ApiSecret":[]}],"paths":{"/me":{"get":{"summary":"Get the authenticated API user","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}}},"/organizations":{"get":{"summary":"List companies the API user belongs to","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}}},"/organizations/{organizationId}/members":{"get":{"summary":"List company members and pending invitations (company admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer"}}]},"/organizations/{organizationId}/invitations":{"post":{"summary":"Invite a new or existing Tickably user (company admin)","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"email":{"type":"string","format":"email"},"company_admin":{"type":"boolean","default":false}},"required":["name","email"],"additionalProperties":false},"example":{"name":"Jamie Client","email":"jamie@example.com","company_admin":false}}}}},"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer"}}]},"/organizations/{organizationId}/projects":{"get":{"summary":"List accessible projects in this company","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["all","active","archived"],"default":"all"}}]},"post":{"summary":"Create a project in this company (company admin)","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"description":{"type":["string","null"]}},"required":["name"],"additionalProperties":false},"example":{"name":"Client website","description":"Website support and development"}}}}},"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer"}}]},"/organizations/{organizationId}/projects/{projectId}":{"get":{"summary":"Get a project in this company","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"patch":{"summary":"Rename, describe, archive or unarchive a project (project admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"description":{"type":["string","null"]},"archived":{"type":"boolean"}},"required":[],"additionalProperties":false},"example":{"name":"Client website 2026","archived":false}}}}},"delete":{"summary":"Permanently delete a project and related data (project admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Exact current project name for confirmation"}},"required":["name"],"additionalProperties":false},"example":{"name":"Client website 2026"}}}}},"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects":{"get":{"summary":"List accessible active projects","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}}},"/projects/{projectId}":{"get":{"summary":"Get project metadata, members and ticket counts","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/settings":{"patch":{"summary":"Update project settings (project admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/members":{"get":{"summary":"List project members","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"post":{"summary":"Add an active or pending company member (project admin)","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1},"role":{"type":"string","enum":["admin","user","client"],"default":"user"}},"required":["user_id"],"additionalProperties":false},"example":{"user_id":17,"role":"client"}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/members/{userId}":{"patch":{"summary":"Change a project member role (project admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["admin","user","client"]}},"required":["role"],"additionalProperties":false},"example":{"role":"user"}}}}},"delete":{"summary":"Remove a project member (project admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"userId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/tickets":{"get":{"summary":"List and filter tickets","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"phase","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"source","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false}}]},"post":{"summary":"Create a ticket","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/tickets/{number}":{"get":{"summary":"Get a ticket with replies, todos and history","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"patch":{"summary":"Update a ticket","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"summary":"Permanently delete a ticket (admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"number","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/tickets/{number}/replies":{"post":{"summary":"Add a reply, optionally mentioning project members","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"number","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/tickets/{number}/replies/{replyId}":{"patch":{"summary":"Edit a reply","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"summary":"Delete a reply","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"number","in":"path","required":true,"schema":{"type":"integer"}},{"name":"replyId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/tickets/{number}/todos":{"post":{"summary":"Add a todo","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"number","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/tickets/{number}/todos/{todoId}":{"patch":{"summary":"Update or check a todo","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"summary":"Delete a todo","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"number","in":"path","required":true,"schema":{"type":"integer"}},{"name":"todoId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/notes":{"get":{"summary":"List shared project notes","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"post":{"summary":"Create a shared project note","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/notes/{noteId}":{"patch":{"summary":"Update a shared project note","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"summary":"Delete a shared project note","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"noteId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/categories":{"get":{"summary":"List ticket categories","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/statuses":{"get":{"summary":"List statuses","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"post":{"summary":"Create a status (admin)","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/statuses/{status}":{"patch":{"summary":"Update a status (admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"summary":"Delete a status (admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"status","in":"path","required":true,"schema":{"type":"string"}}]},"/projects/{projectId}/phases":{"get":{"summary":"List phases","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"post":{"summary":"Create a phase (admin)","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}}]},"/projects/{projectId}/phases/{phase}":{"patch":{"summary":"Update a phase (admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"summary":"Delete a phase (admin)","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid API credentials"},"403":{"description":"Insufficient permissions"},"404":{"description":"Resource not found"},"409":{"description":"Operation conflicts with project state or admin safeguards"}}},"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"phase","in":"path","required":true,"schema":{"type":"string"}}]}},"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key"},"ApiSecret":{"type":"apiKey","in":"header","name":"X-API-Secret"}}}}