{"openapi":"3.1.0","info":{"title":"Pencil Public API","version":"1.0.0","description":"Programmatic access to Pencil tasks, projects, agents, ideas, content, phases, and meetings.\n\n**Authentication.** Every request must send an org-scoped API key as a bearer token:\n\n```\nAuthorization: Bearer pk_live_…\n```\n\nCreate and manage keys in Pencil under **Settings → API Keys**. A key is scoped to a single organization — the org is determined by the key, so you never pass an org id. Each key carries a single coarse role:\n\n- `read` — may call any `GET` endpoint.\n- `write` — may additionally call `POST`/`PATCH`/`DELETE`. A read-only key calling a write endpoint gets `403`.\n\n**Responses.** Single resources are wrapped as `{ \"data\": … }`. List endpoints return `{ \"data\": [...], \"pagination\": { \"nextCursor\": string | null, \"hasMore\": boolean } }`; pass the returned `nextCursor` back as the `cursor` query param to page. Errors use `{ \"error\": { \"code\": …, \"message\": … } }`.\n\n**Rate limits.** Requests are limited per key. Exceeding the limit returns `429` with a `Retry-After` header (seconds until the window resets)."},"servers":[{"url":"https://app.pencil.ink/api/v1","description":"This deployment"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Tasks","description":"Work items on the board."},{"name":"Projects","description":"Groupings of tasks and content."},{"name":"Agents","description":"Agent profiles and their activity feed (read-only)."},{"name":"Ideas","description":"Idea backlog entries."},{"name":"Content","description":"Content pipeline items."},{"name":"Meetings","description":"Meeting objects, summaries, decisions, and action items."},{"name":"Products","description":"Products, components, features, requirements, personas, and stakeholders."},{"name":"Customers","description":"Customer/account records."},{"name":"Roadmap","description":"Goals, key results, initiatives, epics, and roadmap summaries."},{"name":"Phases","description":"Ordered, optionally gated execution stages within an Epic."},{"name":"Planning","description":"Sprints, iterations, and deliverables."},{"name":"Files","description":"Safe file metadata and inline text content."},{"name":"Feedback","description":"Feedback reports and comments."},{"name":"Bugs","description":"Bug reports and comments."}],"paths":{"/discount-codes":{"get":{"tags":["Discount codes"],"operationId":"listDiscountCodes","summary":"List discount codes (site admin)","description":"Requires an explicitly enabled discount-management key whose creator remains a site admin and organization admin. Platform-wide. Returns offers, enabled, and nextCursor (null on the last page).","parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DiscountCodePage"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Discount codes"],"operationId":"createDiscountCode","summary":"Create a discount code (site admin)","description":"Requires a write key with explicit discount-management permission and a current site-admin creator. Single-use; terms editable until redemption starts. Omit recipient IDs for shareable signup redemption. Does not enable global redemption or call Stripe. On uncertain completion, GET the same code before retrying.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","description":"Unique code, 6–64 letters, digits, dashes or underscores; normalized to uppercase."},"label":{"type":"string","maxLength":40},"percentOff":{"type":"integer","minimum":1,"maximum":100},"duration":{"type":"string","enum":["once","repeating","forever"]},"months":{"type":"integer","minimum":1,"maximum":36,"description":"Required for repeating duration."},"planKey":{"type":"string","enum":["pro","team"],"description":"USD monthly base subscription only; excludes AI usage."},"targetOrgId":{"type":"string","description":"Optional recipient organization. Recipient-targeted codes are single-use."},"targetUserId":{"type":"string","description":"Optional recipient user; mutually exclusive with targetOrgId."},"maxRedemptions":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Maximum distinct organization redemptions. Null means unlimited. Defaults to 1 and must be 1 for recipient-targeted codes."},"redeemFrom":{"type":"number","description":"Optional redemption start, Unix milliseconds."},"redeemBy":{"type":"number","description":"Optional future redemption deadline, Unix milliseconds."}},"required":["code","label","percentOff","duration","planKey"]}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DiscountCode"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"description":"Code already exists."},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/discount-codes/{code}":{"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"patch":{"tags":["Discount codes"],"operationId":"updateDiscountCode","summary":"Edit unused discount code terms (site admin)","description":"Requires a write discount-management key and current site-admin creator. Updates supplied fields only. Set duration=repeating and months=12 for twelve months. redeemBy=null clears the deadline. Code and recipient cannot change. Any redemption history locks terms; no Stripe changes are made. Identical updates are no-ops.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"label":{"type":"string","maxLength":40},"percentOff":{"type":"integer","minimum":1,"maximum":100},"duration":{"type":"string","enum":["once","repeating","forever"]},"months":{"type":"integer","minimum":1,"maximum":36,"description":"Required for repeating duration."},"planKey":{"type":"string","enum":["pro","team"],"description":"USD monthly base subscription only; excludes AI usage."},"maxRedemptions":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Maximum distinct organization redemptions. Null means unlimited. Defaults to 1 and must be 1 for recipient-targeted codes."},"redeemFrom":{"anyOf":[{"type":"number","description":"Optional redemption start, Unix milliseconds."},{"type":"null"}],"description":"Unix milliseconds; null clears the start."},"redeemBy":{"anyOf":[{"type":"number","description":"Optional future redemption deadline, Unix milliseconds."},{"type":"null"}],"description":"Future Unix milliseconds; null clears the deadline."}}}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DiscountCode"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"description":"Terms are locked because redemption has started."},"429":{"$ref":"#/components/responses/RateLimited"}}},"get":{"tags":["Discount codes"],"operationId":"getDiscountCode","summary":"Inspect a discount code (site admin)","description":"Requires an explicitly enabled discount-management key and current site-admin creator. Includes redemption and up to ten recent audit events.","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DiscountCodeDetail"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/discount-codes/{code}/deactivate":{"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["Discount codes"],"operationId":"deactivateDiscountCode","summary":"Deactivate a discount code (site admin)","description":"Requires a write discount-management key and current site-admin creator. Prevents future redemption; preserves applied discounts. Repeat-safe. Pending redemptions require reconciliation first.","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DiscountCode"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"description":"Pending redemption must be reconciled."},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tasks":{"get":{"tags":["Tasks"],"summary":"List tasks","description":"Requires a `read` (or `write`) key.","operationId":"listTasks","parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/TaskStatus"},"description":"Filter by status."},{"name":"projectId","in":"query","schema":{"type":"string"},"description":"Filter to a single project."},{"name":"includeArchived","in":"query","schema":{"type":"boolean","default":false},"description":"When true, include archived tasks in the page."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of tasks.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Tasks"],"summary":"Create a task","description":"Requires a `write` key.","operationId":"createTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreate"}}}},"responses":{"201":{"$ref":"#/components/responses/TaskResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tasks/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Tasks"],"summary":"Get a task","operationId":"getTask","responses":{"200":{"$ref":"#/components/responses/TaskResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Tasks"],"summary":"Update a task","description":"Requires a `write` key.","operationId":"updateTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/TaskResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Tasks"],"summary":"Delete a task","description":"Soft-deletes the task. Requires a `write` key.","operationId":"deleteTask","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/tasks/{id}/checklist":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Tasks"],"summary":"Get a task checklist","operationId":"getTaskChecklist","responses":{"200":{"$ref":"#/components/responses/TaskChecklistResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Tasks"],"summary":"Toggle a task checklist item","description":"Requires a `write` key.","operationId":"updateTaskChecklistCompletion","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskChecklistCompletionUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/TaskChecklistResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/task-statuses":{"get":{"tags":["Tasks"],"summary":"List configured task statuses","description":"Returns the ordered visible workflow, including each status's immutable base status and legacy alias.","operationId":"listTaskStatuses","responses":{"200":{"description":"The configured task workflow.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskStatusDefinition"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/projects":{"get":{"tags":["Projects"],"summary":"List projects","description":"Requires a `read` (or `write`) key.","operationId":"listProjects","parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/ProjectStatus"},"description":"Filter by status."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of projects.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Projects"],"summary":"Create a project","description":"Requires a `write` key.","operationId":"createProject","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"$ref":"#/components/responses/ProjectResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/projects/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Projects"],"summary":"Get a project","operationId":"getProject","responses":{"200":{"$ref":"#/components/responses/ProjectResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Projects"],"summary":"Update a project","description":"Requires a `write` key.","operationId":"updateProject","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/ProjectResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/agents":{"get":{"tags":["Agents"],"summary":"List agents","description":"Read-only. Requires a `read` (or `write`) key.","operationId":"listAgents","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of agent profiles.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Agent"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/agents/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The public `agentId` string."}],"get":{"tags":["Agents"],"summary":"Get an agent","description":"Looks up by the public `agentId` string, scoped to the key's org.","operationId":"getAgent","responses":{"200":{"description":"The agent profile.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Agent"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/agents/{id}/activity":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The public `agentId` string."}],"get":{"tags":["Agents"],"summary":"List an agent's activity","description":"Activity feed (board events) for one agent, newest first.","operationId":"listAgentActivity","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of activity events.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentActivity"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/ideas":{"get":{"tags":["Ideas"],"summary":"List ideas","description":"Requires a `read` (or `write`) key.","operationId":"listIdeas","parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/IdeaStatus"},"description":"Filter by status."},{"name":"customerId","in":"query","schema":{"type":"string"},"description":"Filter to ideas linked to a customer."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of ideas.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Idea"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Ideas"],"summary":"Create an idea","description":"Requires a `write` key.","operationId":"createIdea","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaCreate"}}}},"responses":{"201":{"$ref":"#/components/responses/IdeaResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/ideas/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Ideas"],"summary":"Get an idea","operationId":"getIdea","responses":{"200":{"$ref":"#/components/responses/IdeaResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Ideas"],"summary":"Update an idea","description":"Requires a `write` key.","operationId":"updateIdea","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/IdeaResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/content":{"get":{"tags":["Content"],"summary":"List content","description":"Requires a `read` (or `write`) key.","operationId":"listContent","parameters":[{"name":"stage","in":"query","schema":{"$ref":"#/components/schemas/ContentStage"},"description":"Filter by stage."},{"name":"projectId","in":"query","schema":{"type":"string"},"description":"Filter to a single project."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of content items.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Content"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Content"],"summary":"Create a content item","description":"Requires a `write` key.","operationId":"createContent","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentCreate"}}}},"responses":{"201":{"$ref":"#/components/responses/ContentResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/content/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Content"],"summary":"Get a content item","operationId":"getContent","responses":{"200":{"$ref":"#/components/responses/ContentResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Content"],"summary":"Update a content item","description":"Requires a `write` key.","operationId":"updateContent","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/ContentResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/meetings":{"get":{"tags":["Meetings"],"summary":"List or search meetings","description":"Requires a `read` (or `write`) key. Raw transcripts are never included in list responses.","operationId":"listMeetings","parameters":[{"name":"query","in":"query","schema":{"type":"string"},"description":"Search title, summary, participants, tags, and indexed transcript text."},{"name":"source","in":"query","schema":{"$ref":"#/components/schemas/MeetingSource"}},{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"objectKind","in":"query","schema":{"$ref":"#/components/schemas/MeetingObjectKind"}},{"name":"objectId","in":"query","schema":{"type":"string"}},{"name":"summaryStatus","in":"query","schema":{"$ref":"#/components/schemas/MeetingSummaryStatus"}},{"name":"from","in":"query","schema":{"oneOf":[{"type":"integer"},{"type":"string"}]},"description":"Epoch ms or parseable date lower bound."},{"name":"to","in":"query","schema":{"oneOf":[{"type":"integer"},{"type":"string"}]},"description":"Epoch ms or parseable date upper bound."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of meetings.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Meeting"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Meetings"],"summary":"Create a meeting","description":"Creates a manual/API meeting object. Requires a `write` key.","operationId":"createMeeting","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingCreate"}}}},"responses":{"201":{"$ref":"#/components/responses/MeetingResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/meetings/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Meetings"],"summary":"Get a meeting","description":"Pass `includeTranscript=true` to explicitly include the raw transcript when available.","operationId":"getMeeting","parameters":[{"name":"includeTranscript","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"$ref":"#/components/responses/MeetingResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Meetings"],"summary":"Update a meeting","description":"Requires a `write` key.","operationId":"updateMeeting","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/MeetingResource"},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Meetings"],"summary":"Delete a meeting","description":"Soft-deletes the meeting. Requires a `write` key.","operationId":"deleteMeeting","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/meetings/{id}/summary":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Meetings"],"summary":"Get a meeting summary","operationId":"getMeetingSummary","responses":{"200":{"$ref":"#/components/responses/MeetingSummaryResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/products":{"get":{"tags":["Products"],"summary":"List products","operationId":"listProducts","parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"name":"customerId","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Products"],"summary":"Create products","description":"Requires a `write` key.","operationId":"createProducts","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/products/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Products"],"summary":"Get product","operationId":"getProduct","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Products"],"summary":"Update product","description":"Requires a `write` key.","operationId":"updateProduct","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Products"],"summary":"Delete product","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteProduct","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/products/{id}/components":{"get":{"tags":["Products"],"summary":"List components","operationId":"listProductComponents","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Products"],"summary":"Create components","description":"Requires a `write` key.","operationId":"createProductComponents","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/components/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Products"],"summary":"Get component","operationId":"getComponent","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Products"],"summary":"Update component","description":"Requires a `write` key.","operationId":"updateComponent","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Products"],"summary":"Delete component","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteComponent","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/features":{"get":{"tags":["Products"],"summary":"List features","operationId":"listFeatures","parameters":[{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"componentId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Products"],"summary":"Create features","description":"Requires a `write` key.","operationId":"createFeatures","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/features/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Products"],"summary":"Get feature","operationId":"getFeature","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Products"],"summary":"Update feature","description":"Requires a `write` key.","operationId":"updateFeature","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Products"],"summary":"Delete feature","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteFeature","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/requirements":{"get":{"tags":["Products"],"summary":"List requirements and structured user stories","operationId":"listRequirements","parameters":[{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"featureId","in":"query","schema":{"type":"string"}},{"name":"sprintId","in":"query","schema":{"type":"string"}},{"name":"iterationId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"kind","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Products"],"summary":"Create requirements and structured user stories","description":"Requires a `write` key.","operationId":"createRequirements","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/requirements/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Products"],"summary":"Get requirement","operationId":"getRequirement","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Products"],"summary":"Update requirement","description":"Requires a `write` key.","operationId":"updateRequirement","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Products"],"summary":"Delete requirement","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteRequirement","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/personas":{"get":{"tags":["Products"],"summary":"List personas","operationId":"listPersonas","parameters":[{"name":"productId","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Products"],"summary":"Create personas","description":"Requires a `write` key.","operationId":"createPersonas","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/personas/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Products"],"summary":"Get persona","operationId":"getPersona","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Products"],"summary":"Update persona","description":"Requires a `write` key.","operationId":"updatePersona","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Products"],"summary":"Delete persona","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deletePersona","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/stakeholders":{"get":{"tags":["Products"],"summary":"List stakeholders","operationId":"listStakeholders","parameters":[{"name":"customerId","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Products"],"summary":"Create stakeholders","description":"Requires a `write` key.","operationId":"createStakeholders","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/stakeholders/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Products"],"summary":"Get stakeholder","operationId":"getStakeholder","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Products"],"summary":"Update stakeholder","description":"Requires a `write` key.","operationId":"updateStakeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Products"],"summary":"Delete stakeholder","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteStakeholder","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/customers":{"get":{"tags":["Customers"],"summary":"List customers","operationId":"listCustomers","parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Customers"],"summary":"Create customers","description":"Requires a `write` key.","operationId":"createCustomers","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/customers/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Customers"],"summary":"Get customer","operationId":"getCustomer","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Customers"],"summary":"Update customer","description":"Requires a `write` key.","operationId":"updateCustomer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Customers"],"summary":"Delete customer","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteCustomer","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/customers/{id}/contacts":{"get":{"tags":["Customers"],"summary":"List customer contacts","operationId":"listCustomerContacts","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Customers"],"summary":"Create customer contacts","description":"Requires a `write` key.","operationId":"createCustomerContacts","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/contacts":{"get":{"tags":["Customers"],"summary":"List contacts","operationId":"listContacts","parameters":[{"name":"customerId","in":"query","schema":{"type":"string"}},{"name":"email","in":"query","schema":{"type":"string"}},{"name":"desiredAccessLevel","in":"query","schema":{"type":"string"}},{"name":"invitationStatus","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Customers"],"summary":"Create contacts","description":"Requires a `write` key.","operationId":"createContacts","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/contacts/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Customers"],"summary":"Get contact","operationId":"getContact","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Customers"],"summary":"Update contact","description":"Requires a `write` key.","operationId":"updateContact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Customers"],"summary":"Delete contact","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteContact","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/goals":{"get":{"tags":["Roadmap"],"summary":"List goals","operationId":"listGoals","parameters":[{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Roadmap"],"summary":"Create goals","description":"Requires a `write` key.","operationId":"createGoals","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/goals/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Roadmap"],"summary":"Get goal","operationId":"getGoal","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Roadmap"],"summary":"Update goal","description":"Requires a `write` key.","operationId":"updateGoal","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Roadmap"],"summary":"Delete goal","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteGoal","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/goals/{id}/key-results":{"get":{"tags":["Roadmap"],"summary":"List goal key results","operationId":"listGoalKeyResults","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Roadmap"],"summary":"Create goal key results","description":"Requires a `write` key.","operationId":"createGoalKeyResults","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/key-results/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Roadmap"],"summary":"Get goal key result","operationId":"getGoalKeyResult","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Roadmap"],"summary":"Update goal key result","description":"Requires a `write` key.","operationId":"updateGoalKeyResult","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Roadmap"],"summary":"Delete goal key result","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteGoalKeyResult","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/initiatives":{"get":{"tags":["Roadmap"],"summary":"List initiatives","operationId":"listInitiatives","parameters":[{"name":"ownerId","in":"query","schema":{"type":"string"}},{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"customerId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Roadmap"],"summary":"Create initiatives","description":"Requires a `write` key.","operationId":"createInitiatives","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/initiatives/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Roadmap"],"summary":"Get initiative","operationId":"getInitiative","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Roadmap"],"summary":"Update initiative","description":"Requires a `write` key.","operationId":"updateInitiative","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Roadmap"],"summary":"Delete initiative","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteInitiative","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/epics":{"get":{"tags":["Roadmap"],"summary":"List epics","operationId":"listEpics","parameters":[{"name":"ownerId","in":"query","schema":{"type":"string"}},{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"customerId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Roadmap"],"summary":"Create epics","description":"Requires a `write` key.","operationId":"createEpics","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/epics/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Roadmap"],"summary":"Get epic","operationId":"getEpic","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Roadmap"],"summary":"Update epic","description":"Requires a `write` key.","operationId":"updateEpic","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Roadmap"],"summary":"Delete epic","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteEpic","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/epics/{epicId}/phases":{"parameters":[{"name":"epicId","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Phases"],"summary":"List an Epic's phases","operationId":"listEpicPhases","responses":{"200":{"description":"The Epic's phases in execution order.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Phase"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"post":{"tags":["Phases"],"summary":"Create an Epic phase","description":"Appends a phase to the Epic. Requires a `write` key.","operationId":"createEpicPhase","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhaseCreate"}}}},"responses":{"201":{"$ref":"#/components/responses/PhaseResource"},"400":{"$ref":"#/components/responses/ValidationError"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/phases/{phaseId}":{"parameters":[{"name":"phaseId","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Phases"],"summary":"Get a phase","operationId":"getPhase","responses":{"200":{"$ref":"#/components/responses/PhaseResource"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Phases"],"summary":"Update a phase","description":"Requires a `write` key.","operationId":"updatePhase","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhaseUpdate"}}}},"responses":{"200":{"$ref":"#/components/responses/PhaseResource"},"400":{"$ref":"#/components/responses/ValidationError"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/PhaseGateLocked"}}},"delete":{"tags":["Phases"],"summary":"Delete a phase","description":"Detaches its tasks and rewrites remaining positions. Requires a `write` key.","operationId":"deletePhase","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/epics/{epicId}/phases/reorder":{"parameters":[{"name":"epicId","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["Phases"],"summary":"Reorder an Epic's phases","description":"The array must contain every current phase exactly once. Requires a `write` key.","operationId":"reorderEpicPhases","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["phaseIds"],"properties":{"phaseIds":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"The reordered phases.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Phase"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/PhaseGateLocked"}}}},"/phases/{phaseId}/override":{"parameters":[{"name":"phaseId","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["Phases"],"summary":"Override a locked phase gate","description":"Creates a revision-bound, audited override. Requires a `write` key.","operationId":"overridePhaseGate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","maxLength":1000}}}}}},"responses":{"200":{"$ref":"#/components/responses/PhaseResource"},"400":{"$ref":"#/components/responses/ValidationError"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Phases"],"summary":"Clear a phase gate override","description":"Requires a `write` key.","operationId":"clearPhaseGateOverride","responses":{"200":{"$ref":"#/components/responses/PhaseResource"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/tasks/{id}/phase":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"put":{"tags":["Phases"],"summary":"Assign a task to an Epic phase","description":"Set `phaseId` to null to detach it. The phase must belong to the task's Epic. Requires a `write` key.","operationId":"setTaskPhase","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["phaseId"],"properties":{"phaseId":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TaskPhaseAssignment"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/PhaseGateLocked"}}}},"/roadmap/summary":{"get":{"tags":["Roadmap"],"summary":"Get roadmap summary","operationId":"getRoadmapSummary","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/sprints":{"get":{"tags":["Planning"],"summary":"List sprints","operationId":"listSprints","parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"name":"teamId","in":"query","schema":{"type":"string"}},{"name":"customerId","in":"query","schema":{"type":"string"}},{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"projectId","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Planning"],"summary":"Create sprints","description":"Requires a `write` key.","operationId":"createSprints","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/sprints/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Planning"],"summary":"Get sprint","operationId":"getSprint","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Planning"],"summary":"Update sprint","description":"Requires a `write` key.","operationId":"updateSprint","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Planning"],"summary":"Delete sprint","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteSprint","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/iterations":{"get":{"tags":["Planning"],"summary":"List iterations","operationId":"listIterations","parameters":[{"name":"kind","in":"query","schema":{"type":"string"}},{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"featureId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Planning"],"summary":"Create iterations","description":"Requires a `write` key.","operationId":"createIterations","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/iterations/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Planning"],"summary":"Get iteration","operationId":"getIteration","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Planning"],"summary":"Update iteration","description":"Requires a `write` key.","operationId":"updateIteration","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Planning"],"summary":"Delete iteration","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteIteration","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/iterations/{id}/tasks":{"post":{"tags":["Planning"],"summary":"Attach a task to an iteration","operationId":"attachIterationTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string"}}}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/iterations/{id}/tasks/{taskId}":{"delete":{"tags":["Planning"],"summary":"Detach a task from an iteration","operationId":"detachIterationTask","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/deliverables":{"get":{"tags":["Planning"],"summary":"List deliverables","operationId":"listDeliverables","parameters":[{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"iterationId","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Planning"],"summary":"Create deliverables","description":"Requires a `write` key.","operationId":"createDeliverables","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/deliverables/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Planning"],"summary":"Get deliverable","operationId":"getDeliverable","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Planning"],"summary":"Update deliverable","description":"Requires a `write` key.","operationId":"updateDeliverable","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Planning"],"summary":"Delete deliverable","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteDeliverable","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/files":{"get":{"tags":["Files"],"summary":"List files","description":"Returns safe file metadata and inline text content only when already stored inline. Storage URLs are not exposed.","operationId":"listFiles","parameters":[{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"taskId","in":"query","schema":{"type":"string"}},{"name":"contentId","in":"query","schema":{"type":"string"}},{"name":"agentId","in":"query","schema":{"type":"string"}},{"name":"search","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FileObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/files/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Files"],"summary":"Get a file","operationId":"getFile","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FileObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/feedback":{"get":{"tags":["Feedback"],"summary":"List feedback reports","operationId":"listFeedback","parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"priority","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Feedback"],"summary":"Create feedback reports","description":"Requires a `write` key.","operationId":"createFeedback","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/feedback/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Feedback"],"summary":"Get feedback report","operationId":"getFeedback","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Feedback"],"summary":"Update feedback report","description":"Requires a `write` key.","operationId":"updateFeedback","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/feedback/{id}/comments":{"get":{"tags":["Feedback"],"summary":"List feedback comments","operationId":"listFeedbackComments","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CommentList"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"post":{"tags":["Feedback"],"summary":"Post feedback comment","operationId":"createFeedbackComment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Comment"}}}}}}}}},"/bugs":{"get":{"tags":["Bugs"],"summary":"List bugs","operationId":"listBugs","parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"name":"severity","in":"query","schema":{"type":"string"}},{"name":"priority","in":"query","schema":{"type":"string"}},{"name":"productId","in":"query","schema":{"type":"string"}},{"name":"componentId","in":"query","schema":{"type":"string"}},{"name":"featureId","in":"query","schema":{"type":"string"}},{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"assigneeId","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"}],"responses":{"200":{"description":"A page of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DurableObject"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Bugs"],"summary":"Create bugs","description":"Requires a `write` key.","operationId":"createBugs","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/bugs/{id}":{"parameters":[{"$ref":"#/components/parameters/PathId"}],"get":{"tags":["Bugs"],"summary":"Get bug","operationId":"getBug","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Bugs"],"summary":"Update bug","description":"Requires a `write` key.","operationId":"updateBug","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableObjectInput"}}}},"responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurableObject"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Bugs"],"summary":"Delete bug","description":"Soft-deletes the resource. Requires a `write` key.","operationId":"deleteBug","responses":{"200":{"description":"Deletion acknowledged.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/bugs/{id}/comments":{"get":{"tags":["Bugs"],"summary":"List bug comments","operationId":"listBugComments","responses":{"200":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CommentList"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"post":{"tags":["Bugs"],"summary":"Post bug comment","operationId":"createBugComment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentInput"}}}},"responses":{"201":{"description":"The resource.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Comment"}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Org-scoped API key, e.g. `pk_live_…`."}},"parameters":{"PathId":{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The resource id."},"Limit":{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Page size (clamped to 1–100, default 25)."},"Cursor":{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque pagination cursor (`pagination.nextCursor` from a previous page)."}},"schemas":{"DiscountCode":{"type":"object","properties":{"code":{"type":"string","description":"Unique code, 6–64 letters, digits, dashes or underscores; normalized to uppercase."},"label":{"type":"string","maxLength":40},"percentOff":{"type":"integer","minimum":1,"maximum":100},"duration":{"type":"string","enum":["once","repeating","forever"]},"months":{"type":"integer","minimum":1,"maximum":36,"description":"Required for repeating duration."},"planKey":{"type":"string","enum":["pro","team"],"description":"USD monthly base subscription only; excludes AI usage."},"targetOrgId":{"type":"string","description":"Optional recipient organization. Recipient-targeted codes are single-use."},"targetUserId":{"type":"string","description":"Optional recipient user; mutually exclusive with targetOrgId."},"maxRedemptions":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Maximum distinct organization redemptions. Null means unlimited. Defaults to 1 and must be 1 for recipient-targeted codes."},"redeemFrom":{"type":"number","description":"Optional redemption start, Unix milliseconds."},"redeemBy":{"type":"number","description":"Optional future redemption deadline, Unix milliseconds."},"_id":{"type":"string"},"_creationTime":{"type":"number"},"active":{"type":"boolean"},"createdBy":{"type":"string"},"createdAt":{"type":"number"}}},"DiscountCodePage":{"type":"object","properties":{"offers":{"type":"array","items":{"$ref":"#/components/schemas/DiscountCode"}},"enabled":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}},"DiscountCodeDetail":{"allOf":[{"$ref":"#/components/schemas/DiscountCode"},{"type":"object","properties":{"redemption":{"type":["object","null"],"additionalProperties":true},"audit":{"type":"array","items":{"type":"object","additionalProperties":true}}}}]},"Pagination":{"type":"object","properties":{"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, or null when there are no more results."},"hasMore":{"type":"boolean"}}},"DurableObject":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"displayId":{"type":["string","number","null"]},"name":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string","enum":["requirement","user_story"],"description":"Requirement subtype. Legacy rows are returned as requirement."},"personaId":{"type":["string","null"]},"storyActor":{"type":["string","null"]},"storyGoal":{"type":["string","null"]},"storyBenefit":{"type":["string","null"]},"acceptanceCriteria":{"type":"array","items":{"type":"string"}},"storySentence":{"type":["string","null"]},"createdAt":{"type":["integer","null"],"description":"Epoch ms."},"updatedAt":{"type":["integer","null"],"description":"Epoch ms."}},"description":"Stable public shape for newly exposed durable objects. Internal workspace ids, deletion markers, sync data, storage credentials, and secrets are omitted."},"DurableObjectInput":{"type":"object","additionalProperties":true,"description":"Writable fields depend on the endpoint. Requirements accept kind, personaId, storyActor, storyGoal, storyBenefit, and acceptanceCriteria. Unknown fields are ignored by the server-side allow-list."},"FileObject":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"name":{"type":"string"},"size":{"type":"integer"},"mimeType":{"type":"string"},"hasInlineContent":{"type":"boolean"},"content":{"type":["string","null"],"description":"Only present for files stored with `url: inline`."},"createdAt":{"type":"integer"}},"description":"Safe file metadata. Raw storage URLs and credentials are never returned."},"Comment":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"authorType":{"type":"string"},"authorId":{"type":"string"},"authorName":{"type":"string"},"content":{"type":"string"},"createdAt":{"type":"integer"}}},"CommentList":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"CommentInput":{"type":"object","required":["content"],"properties":{"content":{"type":"string"}}},"TaskStatus":{"type":"string","enum":["backlog","inbox","in_progress","blocked","review","done"]},"TaskBaseStatus":{"type":"string","enum":["backlog","todo","in_progress","blocked","verifying","done"]},"TaskStatusDefinition":{"type":"object","required":["id","name","baseStatus","legacyStatus","isDefault","order"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","nullable":true},"baseStatus":{"$ref":"#/components/schemas/TaskBaseStatus"},"legacyStatus":{"$ref":"#/components/schemas/TaskStatus"},"isDefault":{"type":"boolean"},"order":{"type":"integer"}}},"Priority":{"type":"string","enum":["urgent","high","medium","low"]},"Task":{"type":"object","properties":{"id":{"type":"string"},"displayId":{"type":"string","nullable":true,"example":"T-142"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"$ref":"#/components/schemas/TaskStatus"},"baseStatus":{"$ref":"#/components/schemas/TaskBaseStatus"},"statusId":{"type":"string","nullable":true},"priority":{"$ref":"#/components/schemas/Priority"},"taskType":{"type":"string","description":"Defaults to `task`."},"projectId":{"type":"string","nullable":true},"epicId":{"type":"string","nullable":true},"phaseId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"agentId":{"type":"string","nullable":true},"assigneeId":{"type":"string","nullable":true},"humanAssigneeId":{"type":"string","nullable":true,"description":"Canonical Pencil user id for the task's human owner. Distinct from agentId."},"autoPickupDisabled":{"type":"boolean","description":"When true, unassigned inbox tasks are kept manual and skipped by automatic AI pickup."},"dueAt":{"type":"integer","nullable":true,"description":"Epoch ms."},"tags":{"type":"array","items":{"type":"string"}},"checklistSummary":{"$ref":"#/components/schemas/TaskChecklistSummary"},"createdAt":{"type":"integer","description":"Epoch ms."},"updatedAt":{"type":"integer","nullable":true,"description":"Epoch ms."}}},"TaskCreate":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"priority":{"$ref":"#/components/schemas/Priority"},"status":{"$ref":"#/components/schemas/TaskStatus"},"baseStatus":{"allOf":[{"$ref":"#/components/schemas/TaskBaseStatus"}],"description":"Canonical alternative to `status`; resolves to that base's configured default."},"statusId":{"type":"string","description":"Concrete status id from `GET /task-statuses`."},"projectId":{"type":"string"},"customerId":{"type":"string"},"agentId":{"type":"string"},"humanAssigneeId":{"type":"string","description":"Canonical Pencil user id to set as the human owner."},"autoPickupDisabled":{"type":"boolean","default":false,"description":"Set true to keep the task manual instead of allowing automatic AI pickup."},"dueAt":{"type":"integer","description":"Epoch ms."},"tags":{"type":"array","items":{"type":"string"}},"checklist":{"$ref":"#/components/schemas/TaskChecklistTemplate"}}},"TaskUpdate":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"priority":{"$ref":"#/components/schemas/Priority"},"status":{"$ref":"#/components/schemas/TaskStatus"},"baseStatus":{"allOf":[{"$ref":"#/components/schemas/TaskBaseStatus"}],"description":"Canonical alternative to `status`; resolves to that base's configured default."},"statusId":{"type":"string","description":"Concrete status id from `GET /task-statuses`."},"projectId":{"type":"string"},"customerId":{"type":"string","nullable":true},"agentId":{"type":"string"},"humanAssigneeId":{"type":"string","nullable":true,"description":"Canonical Pencil user id to set as the human owner, or null to clear it."},"autoPickupDisabled":{"type":"boolean","description":"Set false to make an unassigned inbox task eligible for automatic AI pickup again."},"dueAt":{"type":"integer","description":"Epoch ms."},"tags":{"type":"array","items":{"type":"string"}}}},"TaskChecklistTemplate":{"type":"object","required":["steps"],"properties":{"subjects":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"email":{"type":"string"}}}},"steps":{"type":"array","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"required":{"type":"boolean","default":true}}}}}},"TaskChecklistSummary":{"type":"object","properties":{"subjectCount":{"type":"integer"},"stepCount":{"type":"integer"},"total":{"type":"integer"},"completed":{"type":"integer"},"requiredTotal":{"type":"integer"},"requiredCompleted":{"type":"integer"},"incompleteRequired":{"type":"integer"},"complete":{"type":"boolean"},"percent":{"type":"integer"}}},"TaskChecklistItem":{"type":"object","properties":{"stepId":{"type":"string"},"subjectId":{"type":"string","nullable":true},"title":{"type":"string"},"required":{"type":"boolean"},"position":{"type":"integer"},"completed":{"type":"boolean"}}},"TaskChecklist":{"type":"object","properties":{"taskId":{"type":"string"},"readOnly":{"type":"boolean"},"summary":{"$ref":"#/components/schemas/TaskChecklistSummary"},"steps":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"title":{"type":"string"},"required":{"type":"boolean"},"position":{"type":"integer"}}}},"subjects":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","nullable":true},"linkedUserId":{"type":"string","nullable":true},"position":{"type":"integer"},"summary":{"$ref":"#/components/schemas/TaskChecklistSummary"},"items":{"type":"array","items":{"$ref":"#/components/schemas/TaskChecklistItem"}}}}},"items":{"type":"array","description":"Plain checklist items when no subjects are present.","items":{"$ref":"#/components/schemas/TaskChecklistItem"}}}},"TaskChecklistCompletionUpdate":{"type":"object","required":["stepId","completed"],"properties":{"stepId":{"type":"string"},"subjectId":{"type":"string"},"completed":{"type":"boolean"}}},"PhaseGateMode":{"type":"string","enum":["advisory","strict"]},"PhaseWorkState":{"type":"string","enum":["empty","planned","active","done"]},"PhaseGateState":{"type":"string","enum":["open","locked","overridden"]},"Phase":{"type":"object","required":["id","globalId","epicId","name","position","gateMode","workState","gateState","taskCount","completedTaskCount","remainingTaskCount"],"properties":{"id":{"type":"string"},"globalId":{"type":"string","example":"PH-12"},"epicId":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"position":{"type":"integer","minimum":0},"gateMode":{"$ref":"#/components/schemas/PhaseGateMode"},"workState":{"$ref":"#/components/schemas/PhaseWorkState"},"gateState":{"$ref":"#/components/schemas/PhaseGateState"},"blockingPhase":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"globalId":{"type":"string"},"name":{"type":"string"},"remainingTaskCount":{"type":"integer"}}},"taskCount":{"type":"integer"},"completedTaskCount":{"type":"integer"},"remainingTaskCount":{"type":"integer"},"targetDate":{"type":"integer","nullable":true,"description":"Epoch ms."},"docUrl":{"type":"string","nullable":true,"format":"uri"},"ownerId":{"type":"string","nullable":true},"gateOverride":{"type":"object","nullable":true,"properties":{"at":{"type":"integer","description":"Epoch ms."},"byUserId":{"type":"string","nullable":true},"byAgent":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}}},"createdAt":{"type":"integer","description":"Epoch ms."},"updatedAt":{"type":"integer","description":"Epoch ms."}}},"PhaseCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":120},"description":{"type":"string"},"gateMode":{"$ref":"#/components/schemas/PhaseGateMode"},"targetDate":{"type":"integer","description":"Epoch ms."},"docUrl":{"type":"string","format":"uri"},"ownerId":{"type":"string"}}},"PhaseUpdate":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"description":{"type":"string","nullable":true},"gateMode":{"$ref":"#/components/schemas/PhaseGateMode"},"targetDate":{"type":"integer","nullable":true,"description":"Epoch ms."},"docUrl":{"type":"string","nullable":true,"format":"uri"},"ownerId":{"type":"string","nullable":true}}},"TaskPhaseAssignment":{"type":"object","required":["taskId","phaseId"],"properties":{"taskId":{"type":"string"},"phaseId":{"type":"string","nullable":true}}},"ProjectStatus":{"type":"string","enum":["active","paused","on_hold","completed","archived"]},"ProjectType":{"type":"string","enum":["kanban","content"]},"Project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"$ref":"#/components/schemas/ProjectStatus"},"projectType":{"$ref":"#/components/schemas/ProjectType"},"dueDate":{"type":"integer","nullable":true,"description":"Epoch ms."},"leadAgentId":{"type":"string","nullable":true},"productId":{"type":"string","nullable":true},"taskCount":{"type":"integer"},"createdAt":{"type":"integer","description":"Epoch ms."},"updatedAt":{"type":"integer","nullable":true,"description":"Epoch ms."}}},"ProjectCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"dueDate":{"type":"integer","description":"Epoch ms."},"projectType":{"$ref":"#/components/schemas/ProjectType"}}},"ProjectUpdate":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/components/schemas/ProjectStatus"},"dueDate":{"type":"integer","description":"Epoch ms."},"projectType":{"$ref":"#/components/schemas/ProjectType"}}},"Agent":{"type":"object","properties":{"id":{"type":"string","description":"Convex document id."},"agentId":{"type":"string","description":"Public agent id string."},"name":{"type":"string"},"role":{"type":"string"},"responsibilities":{"type":"array","items":{"type":"string"}},"status":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true},"agentType":{"type":"string","nullable":true},"isHeadAgent":{"type":"boolean"},"autonomyEnabled":{"type":"boolean"},"runner":{"type":"string","description":"Defaults to `claude_code`."},"currentTask":{"type":"string","nullable":true},"lastActiveAt":{"type":"integer","nullable":true,"description":"Epoch ms."},"createdAt":{"type":"integer","description":"Epoch ms."}}},"AgentActivity":{"type":"object","properties":{"id":{"type":"string"},"eventType":{"type":"string"},"agentId":{"type":"string","nullable":true},"agentName":{"type":"string","nullable":true},"title":{"type":"string"},"detail":{"type":"string","nullable":true},"taskId":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"createdAt":{"type":"integer","description":"Epoch ms."}}},"IdeaStatus":{"type":"string","enum":["open","planning","promoted","archived"]},"Idea":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string","nullable":true},"status":{"$ref":"#/components/schemas/IdeaStatus"},"projectId":{"type":"string","nullable":true},"productId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"featureId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"promotedTaskCount":{"type":"integer"},"createdAt":{"type":"integer","description":"Epoch ms."},"updatedAt":{"type":"integer","nullable":true,"description":"Epoch ms."}}},"IdeaCreate":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"summary":{"type":"string"},"projectId":{"type":"string"},"productId":{"type":"string"},"customerId":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}},"IdeaUpdate":{"type":"object","properties":{"title":{"type":"string"},"summary":{"type":"string"},"status":{"$ref":"#/components/schemas/IdeaStatus"},"projectId":{"type":"string"},"customerId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}}}},"ContentStage":{"type":"string","enum":["idea","draft","script","review","publish"]},"Content":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"stage":{"$ref":"#/components/schemas/ContentStage"},"body":{"type":"string","nullable":true},"priority":{"allOf":[{"$ref":"#/components/schemas/Priority"}],"nullable":true},"projectId":{"type":"string","nullable":true},"agentId":{"type":"string","nullable":true},"assigneeId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"dueAt":{"type":"integer","nullable":true,"description":"Epoch ms."},"isBlocked":{"type":"boolean"},"autoAdvance":{"type":"boolean","nullable":true},"createdAt":{"type":"integer","description":"Epoch ms."},"updatedAt":{"type":"integer","nullable":true,"description":"Epoch ms."}}},"ContentCreate":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"stage":{"$ref":"#/components/schemas/ContentStage"},"priority":{"$ref":"#/components/schemas/Priority"},"projectId":{"type":"string"},"agentId":{"type":"string"},"dueAt":{"type":"integer","description":"Epoch ms."}}},"ContentUpdate":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"body":{"type":"string"},"stage":{"$ref":"#/components/schemas/ContentStage"},"priority":{"$ref":"#/components/schemas/Priority"},"projectId":{"type":"string"},"agentId":{"type":"string"},"dueAt":{"type":"integer","description":"Epoch ms."}}},"MeetingSource":{"type":"string","enum":["fireflies","tldv","google_meet","microsoft_teams","recall","email","manual"]},"MeetingSummaryStatus":{"type":"string","enum":["none","pending","ready","error"]},"MeetingObjectKind":{"type":"string","enum":["task","project","product","company","initiative","goal","epic","feature","component","requirement","persona","stakeholder","feedback","idea","deliverable","sprint","iteration","bug","milestone","repo"]},"MeetingRelatedObject":{"type":"object","required":["kind","objectId"],"properties":{"kind":{"$ref":"#/components/schemas/MeetingObjectKind"},"objectId":{"type":"string"},"title":{"type":"string","nullable":true,"description":"Resolved title in responses."},"globalId":{"type":"string","nullable":true}}},"MeetingParticipant":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}}},"MeetingActionItem":{"type":"object","properties":{"text":{"type":"string"},"ownerHint":{"type":"string","nullable":true},"status":{"type":"string","enum":["suggested","dismissed","converted"]},"taskId":{"type":"string","nullable":true}}},"Meeting":{"type":"object","properties":{"id":{"type":"string"},"noteId":{"type":"string"},"title":{"type":"string"},"source":{"$ref":"#/components/schemas/MeetingSource"},"externalId":{"type":"string","nullable":true},"meetingAt":{"type":"integer","nullable":true,"description":"Epoch ms."},"durationSec":{"type":"integer","nullable":true},"participants":{"type":"array","items":{"$ref":"#/components/schemas/MeetingParticipant"}},"organizerEmail":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true},"summaryStatus":{"$ref":"#/components/schemas/MeetingSummaryStatus"},"summaryError":{"type":"string","nullable":true},"decisions":{"type":"array","items":{"type":"string"}},"actionItems":{"type":"array","items":{"$ref":"#/components/schemas/MeetingActionItem"}},"actionItemCount":{"type":"integer"},"openActionItemCount":{"type":"integer"},"sourceUrl":{"type":"string","nullable":true},"recordingUrl":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"relatedObjects":{"type":"array","items":{"$ref":"#/components/schemas/MeetingRelatedObject"}},"tags":{"type":"array","items":{"type":"string"}},"transcript":{"type":"string","nullable":true,"description":"Only present on `GET /meetings/{id}?includeTranscript=true`."},"createdAt":{"type":"integer","description":"Epoch ms."},"updatedAt":{"type":"integer","nullable":true,"description":"Epoch ms."}}},"MeetingSummary":{"allOf":[{"$ref":"#/components/schemas/Meeting"}],"description":"Summary-focused meeting shape; never includes `transcript`."},"MeetingCreate":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"summary":{"type":"string"},"transcript":{"type":"string","description":"Stored and summarized, but omitted from default responses."},"meetingAt":{"type":"integer","description":"Epoch ms."},"durationSec":{"type":"integer"},"participants":{"type":"array","items":{"$ref":"#/components/schemas/MeetingParticipant"}},"organizerEmail":{"type":"string"},"projectId":{"type":"string"},"relatedObjects":{"type":"array","items":{"$ref":"#/components/schemas/MeetingRelatedObject"}},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"},"recordingUrl":{"type":"string"},"decisions":{"type":"array","items":{"type":"string"}},"actionItems":{"type":"array","items":{"$ref":"#/components/schemas/MeetingActionItem"}}}},"MeetingUpdate":{"type":"object","properties":{"title":{"type":"string"},"summary":{"type":"string"},"transcript":{"type":"string"},"meetingAt":{"type":"integer","nullable":true,"description":"Epoch ms. Send null or `clearMeetingAt` to clear."},"clearMeetingAt":{"type":"boolean"},"durationSec":{"type":"integer","nullable":true},"clearDurationSec":{"type":"boolean"},"participants":{"type":"array","items":{"$ref":"#/components/schemas/MeetingParticipant"}},"organizerEmail":{"type":"string"},"projectId":{"type":"string","nullable":true},"clearProjectId":{"type":"boolean"},"relatedObjects":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/MeetingRelatedObject"}},"clearRelatedObjects":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string"},"recordingUrl":{"type":"string"},"decisions":{"type":"array","items":{"type":"string"}},"actionItems":{"type":"array","items":{"$ref":"#/components/schemas/MeetingActionItem"}}}},"DeleteResult":{"type":"object","properties":{"deleted":{"type":"boolean"}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","forbidden","rate_limited","validation_error","phase_gate_locked","not_found","internal_error"]},"message":{"type":"string"}}}}}},"responses":{"TaskResource":{"description":"A single task.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Task"}}}}}},"TaskChecklistResource":{"description":"A task checklist.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TaskChecklist"}}}}}},"ProjectResource":{"description":"A single project.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Project"}}}}}},"IdeaResource":{"description":"A single idea.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Idea"}}}}}},"ContentResource":{"description":"A single content item.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Content"}}}}}},"MeetingResource":{"description":"A single meeting.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Meeting"}}}}}},"MeetingSummaryResource":{"description":"A meeting summary.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeetingSummary"}}}}}},"ValidationError":{"description":"Malformed request or invalid field (`validation_error`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Missing or invalid API key (`unauthorized`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The key is read-only and may not write (`forbidden`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Resource not found in this org (`not_found`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"PhaseGateLocked":{"description":"A strict phase gate prevents the requested start (`phase_gate_locked`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded (`rate_limited`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until the rate-limit window resets."}}}}}}