# API changelog

> Every change to the public By Dawn API, newest first.

Rendered from `@lendercom/saw-contract@0.7.1-dev.2118`.

Generated by `bun run contract:public` from `oasdiff changelog` between a change's merge-base and its
head, for the operations published in `public.openapi.yaml`. One entry per change, newest first.
Do not edit by hand — CI regenerates each entry and fails when the committed one differs.

<!-- public-changelog:saw/SAW-3252 -->
## 2026-10-26 · saw/SAW-3252

### Schemas
- added the `realtime_unavailable` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-3214 -->
## 2026-10-25 · saw/SAW-3214

### `GET /epics/{epicId}`
- added the optional property `data/statusUpdate` to the response with the `200` status

### `GET /epics`
- added the optional property `data/items/statusUpdate` to the response with the `200` status

### `PATCH /epics/{epicId}`
- added the optional property `data/statusUpdate` to the response with the `200` status

### `POST /epics/{epicId}/status-updates`
- endpoint added

### `POST /epics`
- added the optional property `data/statusUpdate` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2984 -->
## 2026-10-24 · saw/SAW-2984

### Schemas
- added the `doc_page_linked_source` value to `ApiErrorSlug`
- added the `doc_source_changed_since_import` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-3074 -->
## 2026-10-24 · saw/SAW-3074

### `GET /projects/{projectId}`
- added the optional property `data/ticketRewriteEnabledOverride` to the response with the `200` status
- added the optional property `data/ticketRewrite` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/ticketRewriteEnabledOverride` to the response with the `200` status
- added the optional property `data/items/ticketRewrite` to the response with the `200` status

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/rewrittenAt` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/rewrittenAt` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/rewrittenAt` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/rewrittenAt` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/rewrittenAt` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/rewrittenAt` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/rewrittenAt` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/rewrittenAt` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/rewrittenAt` to the response with the `200` status

### Schemas
- added the `ticket_already_rewritten` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2964 -->
## 2026-10-23 · saw/SAW-2964

### Schemas
- added the `docs_review_not_delegated` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2900 -->
## 2026-10-23 · saw/SAW-2900

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/emailReply` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/emailReply` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/emailReply` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/emailReply` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/emailReply` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/emailReply` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/emailReply` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/emailReply` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/emailReply` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2918 -->
## 2026-10-23 · saw/SAW-2918

### Schemas
- added the `calendar_meeting_not_found` value to `ApiErrorSlug`
- added the `calendar_meeting_unconfirmed` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2700 -->
## 2026-10-23 · saw/SAW-2700

### `GET /projects/{projectId}`
- added the optional property `data/circleciProjectAllowlist` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/circleciProjectAllowlist` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2698 -->
## 2026-10-23 · saw/SAW-2698

### `GET /projects/{projectId}`
- added the optional property `data/buildkitePipelineAllowlist` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/buildkitePipelineAllowlist` to the response with the `200` status

### Schemas
- added the `test_launch_pipeline_not_allowlisted` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2917 -->
## 2026-10-23 · saw/SAW-2917

### `GET /tickets`
- added the new enum value `due` to the `query` request parameter `sort`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2792 -->
## 2026-10-23 · saw/SAW-2792

### Schemas
- added the `code_rev_not_found` value to `ApiErrorSlug`
- added the `code_path_not_found` value to `ApiErrorSlug`
- added the `code_scope_unsupported` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2566 -->
## 2026-10-23 · saw/SAW-2566

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/areaId` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/areaId` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/areaId` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/areaId` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/areaId` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/areaId` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/areaId` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/areaId` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/areaId` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2882 -->
## 2026-10-23 · saw/SAW-2882

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/handledBy` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/handledBy` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/handledBy` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/handledBy` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the new optional request property `handledBy`
- added the optional property `data/handledBy` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/handledBy` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/handledBy` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/handledBy` to the response with the `200` status

### `POST /tickets`
- added the new optional request property `dueDate`
- added the new optional request property `handledBy`
- added the optional property `data/handledBy` to the response with the `200` status

### Schemas
- added the `ticket_run_active` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2561 -->
## 2026-10-21 · saw/SAW-2561

### Schemas
- added the `meeting_not_found` value to `ApiErrorSlug`
- added the `meeting_ask_not_found` value to `ApiErrorSlug`
- added the `meeting_rule_not_found` value to `ApiErrorSlug`
- added the `meeting_phase_passed` value to `ApiErrorSlug`
- added the `meeting_run_active` value to `ApiErrorSlug`
- added the `tracker_credential_kind_unknown` value to `AccountsApiErrorSlug`
- added the `personal_project` value to `AccountsApiErrorSlug`
- added the `cross_org_read_refused` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2564 -->
## 2026-10-21 · saw/SAW-2564

### Schemas
- added the `outbound_draft_not_found` value to `ApiErrorSlug`
- added the `outbound_draft_conflict` value to `ApiErrorSlug`
- added the `outbound_draft_unconfirmed` value to `ApiErrorSlug`
- added the `mailbox_not_connected` value to `ApiErrorSlug`
- added the `mailbox_unavailable` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2815 -->
## 2026-10-21 · saw/SAW-2815

### Schemas
- added the `launch-failure` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2778 -->
## 2026-10-21 · saw/SAW-2778

### `GET /projects/{projectId}/test-cases`
- added the new enum value `pending-review` to the `query` request parameter `state`

### `PATCH /test-cases/{testCaseId}`
- **Breaking:** request property `state` was restricted to a list of enum values
- added the new `active` enum value to the request property `state`
- added the new `deprecated` enum value to the request property `state`
- added the new `draft` enum value to the request property `state`

### Schemas
- `TestCaseState` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `pending-review` value to `TestCaseState`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2713 -->
## 2026-10-21 · saw/SAW-2713

### `GET /projects/{projectId}`
- added the optional property `data/allowPrivateTickets` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/allowPrivateTickets` to the response with the `200` status

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/privateOwnerId` to the response with the `200` status
- added the optional property `data/items/items/private` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/privateOwnerId` to the response with the `200` status
- added the optional property `data/items/private` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/privateOwnerId` to the response with the `200` status
- added the optional property `data/private` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/privateOwnerId` to the response with the `200` status
- added the optional property `data/items/items/private` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the new optional request property `private`
- added the optional property `data/privateOwnerId` to the response with the `200` status
- added the optional property `data/private` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/privateOwnerId` to the response with the `200` status
- added the optional property `data/private` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/privateOwnerId` to the response with the `200` status
- added the optional property `data/private` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/privateOwnerId` to the response with the `200` status
- added the optional property `data/private` to the response with the `200` status

### `POST /tickets`
- added the new optional request property `private`
- added the optional property `data/privateOwnerId` to the response with the `200` status
- added the optional property `data/private` to the response with the `200` status

### Schemas
- added the `private_tickets_disabled` value to `ApiErrorSlug`
- added the `private_ticket_member_only` value to `ApiErrorSlug`
- added the `private_ticket_run_active` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2729 -->
## 2026-10-21 · saw/SAW-2729

### `GET /customers/{customerId}`
- added the optional property `data/syncedFrom` to the response with the `200` status

### `GET /customers`
- added the optional property `data/items/items/syncedFrom` to the response with the `200` status

### `PATCH /customers/{customerId}`
- added the optional property `data/syncedFrom` to the response with the `200` status

### `POST /customers`
- added the optional property `data/syncedFrom` to the response with the `200` status

### `PUT /customers/external/{namespace}/{externalId}`
- added the optional property `data/syncedFrom` to the response with the `200` status

### Schemas
- `CustomerExternalIdSource` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `sawrun` value to `CustomerExternalIdSource`
- `CustomerRequestSource` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `sawrun` value to `CustomerRequestSource`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2572 -->
## 2026-10-21 · saw/SAW-2572

### Schemas
- added the `cross_org_read_only` value to `ApiErrorSlug`
- added the `cross_org_read_refused` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2578 -->
## 2026-10-20 · saw/SAW-2578

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/items/items/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/items/items/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/items/items/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/items/items/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/items/items/openSecretRequests/items/kind` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/items/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/items/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/items/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/items/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/items/openSecretRequests/items/kind` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/openSecretRequests/items/kind` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/items/items/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/items/items/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/items/items/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/items/items/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/items/items/openSecretRequests/items/kind` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/openSecretRequests/items/kind` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/openSecretRequests/items/kind` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/openSecretRequests/items/kind` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/openSecretRequests/items/kind` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/openSecretRequests/items/requestedForUserId` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/suggestedScope` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/target` to the response with the `200` status
- added the optional property `data/openSecretRequests/items/usage` to the response with the `200` status
- added the required property `data/openSecretRequests/items/fields` to the response with the `200` status
- added the required property `data/openSecretRequests/items/kind` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2558 -->
## 2026-10-21 · saw/SAW-2558

### `GET /statuses`
- added the optional property `data/items/ballOwner` to the response with the `200` status

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/ballOwner` to the response with the `200` status
- added the optional property `data/items/items/cardKind` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/ballOwner` to the response with the `200` status
- added the optional property `data/items/cardKind` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/ballOwner` to the response with the `200` status
- added the optional property `data/cardKind` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/ballOwner` to the response with the `200` status
- added the optional property `data/items/items/cardKind` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/ballOwner` to the response with the `200` status
- added the optional property `data/cardKind` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/ballOwner` to the response with the `200` status
- added the optional property `data/cardKind` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/ballOwner` to the response with the `200` status
- added the optional property `data/cardKind` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/ballOwner` to the response with the `200` status
- added the optional property `data/cardKind` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/ballOwner` to the response with the `200` status
- added the optional property `data/cardKind` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2571 -->
## 2026-10-20 · saw/SAW-2571

### Schemas
- added the `mailbox_admin_consent_required` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2763 -->
## 2026-10-21 · saw/SAW-2763

### Schemas
- `RuntimeId` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `grok` value to `RuntimeId`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2722 -->
## 2026-10-20 · saw/SAW-2722

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/attachedArtifactIds` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/attachedArtifactIds` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/attachedArtifactIds` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/attachedArtifactIds` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/attachedArtifactIds` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/attachedArtifactIds` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/attachedArtifactIds` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/attachedArtifactIds` to the response with the `200` status

### `POST /tickets`
- added the new optional request property `attachArtifactIds`
- added the optional property `data/attachedArtifactIds` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2562 -->
## 2026-10-20 · saw/SAW-2562

### Schemas
- added the `calendar_not_connected` value to `ApiErrorSlug`
- added the `calendar_hold_not_found` value to `ApiErrorSlug`
- added the `mailbox_provider_not_configured` value to `AccountsApiErrorSlug`
- added the `mailbox_connect_invalid_state` value to `AccountsApiErrorSlug`
- added the `mailbox_connect_expired` value to `AccountsApiErrorSlug`
- added the `mailbox_connect_failed` value to `AccountsApiErrorSlug`
- added the `mailbox_not_found` value to `AccountsApiErrorSlug`
- added the `mailbox_reconnect_required` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2692 -->
## 2026-10-20 · saw/SAW-2692

### `POST /tickets/{ticketId}/comments`
- the `attachmentIds` request property's maxItems was unset from `8`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2563 -->
## 2026-10-20 · saw/SAW-2563

### Schemas
- added the `personal_board_forbidden` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2519 -->
## 2026-10-20 · saw/SAW-2519

### `GET /projects/{projectId}`
- added the optional property `data/jenkinsJobAllowlist` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/jenkinsJobAllowlist` to the response with the `200` status

### Schemas
- added the `test_launch_job_not_allowlisted` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2556 -->
## 2026-10-20 · saw/SAW-2556

### `GET /projects/{projectId}`
- added the optional property `data/ownerUserId` to the response with the `200` status
- added the optional property `data/scope` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/ownerUserId` to the response with the `200` status
- added the optional property `data/items/scope` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2309 -->
## 2026-10-20 · saw/SAW-2309

### `POST /projects/{projectId}/deploys`
- endpoint added
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2329 -->
## 2026-10-19 · saw/SAW-2329

### `POST /auth/token/github-oidc`
- endpoint added

### Schemas
- added the `project_not_found` value to `AccountsApiErrorSlug`
- added the `github_oidc_invalid_token` value to `AccountsApiErrorSlug`
- added the `github_oidc_no_trust` value to `AccountsApiErrorSlug`
- added the `github_oidc_ambiguous_trust` value to `AccountsApiErrorSlug`
- added the `github_oidc_owner_not_connected` value to `AccountsApiErrorSlug`
- added the `github_installation_not_found` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2539 -->
## 2026-10-19 · saw/SAW-2539

### `GET /teams/{teamId}/tickets`
- added the optional property `data/items/items/openSecretRequests` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/openSecretRequests` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/openSecretRequests` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/openSecretRequests` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/openSecretRequests` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/openSecretRequests` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/openSecretRequests` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/openSecretRequests` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/openSecretRequests` to the response with the `200` status

### Schemas
- added the `secret_request_not_found` value to `ApiErrorSlug`
- added the `secret_request_closed` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2313 -->
## 2026-10-19 · saw/SAW-2313

### Schemas
- added the `release_test_gate_closed` value to `ApiErrorSlug`
- added the `release_test_signoff_not_needed` value to `ApiErrorSlug`
- added the `release_test_signoff_person_only` value to `ApiErrorSlug`
- added the `release_test_signoff_not_found` value to `ApiErrorSlug`
- added the `release_test_signoff_stale` value to `ApiErrorSlug`
- added the `release_test_gate_person_only` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2319 -->
## 2026-10-19 · saw/SAW-2319

### `GET /test-runs/{testRunId}/coverage`
- added the required property `data/files/items/uncovered` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2459 -->
## 2026-10-18 · saw/SAW-2459

### Schemas
- added the `repo_secret_scope_invalid` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2297 -->
## 2026-10-18 · saw/SAW-2297

### Schemas
- added the `test_library_bootstrap_not_ready` value to `ApiErrorSlug`
- added the `test_library_bootstrap_undecided` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2323 -->
## 2026-10-18 · saw/SAW-2323

### `GET /projects/{projectId}/test-cases`
- added the required property `data/items/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/aiRun` to the response with the `200` status
- added the required property `data/items/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/executedByKind` to the response with the `200` status

### `GET /projects/{projectId}/test-runs`
- added the required property `data/items/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/items/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### `GET /test-cases/{testCaseId}/run-entries`
- added the required property `data/items/aiRun` to the response with the `200` status
- added the required property `data/items/assigneeKind` to the response with the `200` status
- added the required property `data/items/history/items/aiRun` to the response with the `200` status

### `GET /test-cases/{testCaseId}`
- added the required property `data/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/aiRun` to the response with the `200` status
- added the required property `data/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/executedByKind` to the response with the `200` status

### `GET /test-run-entries/{testRunEntryId}`
- added the required property `data/entry/aiRun` to the response with the `200` status
- added the required property `data/entry/assigneeKind` to the response with the `200` status
- added the required property `data/entry/history/items/aiRun` to the response with the `200` status

### `GET /test-runs/{testRunId}/entries`
- added the required property `data/items/aiRun` to the response with the `200` status
- added the required property `data/items/assigneeKind` to the response with the `200` status
- added the required property `data/items/history/items/aiRun` to the response with the `200` status

### `GET /test-runs/{testRunId}`
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### `PATCH /test-cases/{testCaseId}`
- added the required property `current/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/aiRun` to the response with the `409` status
- added the required property `current/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/executedByKind` to the response with the `409` status
- added the required property `data/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/aiRun` to the response with the `200` status
- added the required property `data/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/executedByKind` to the response with the `200` status

### `PATCH /test-run-entries/{testRunEntryId}`
- added the new optional request property `assigneeKind`
- added the required property `data/aiRun` to the response with the `200` status
- added the required property `data/assigneeKind` to the response with the `200` status
- added the required property `data/history/items/aiRun` to the response with the `200` status

### `PATCH /test-runs/{testRunId}/manual`
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### `POST /projects/{projectId}/test-cases`
- added the required property `data/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/aiRun` to the response with the `200` status
- added the required property `data/lastManual/oneOf[#/components/schemas/TestCaseLastManual]/executedByKind` to the response with the `200` status

### `POST /projects/{projectId}/test-runs/manual`
- added the new optional request property `assigneeKind`
- added the required property `data/items/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/items/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### `POST /projects/{projectId}/test-runs`
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### `POST /test-runs/{testRunId}/assign`
- added the new optional request property `assigneeKind`

### `POST /test-runs/{testRunId}/close`
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### `POST /test-runs/{testRunId}/entries`
- added the new optional request property `assigneeKind`

### `POST /test-runs/{testRunId}/reopen`
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterEntries` to the response with the `200` status
- added the required property `data/manual/oneOf[#/components/schemas/TestRunManual]/aiTesterSessionId` to the response with the `200` status

### Schemas
- added the `ai_tester_session_active` value to `ApiErrorSlug`
- added the `ai_tester_session_finished` value to `ApiErrorSlug`
- `TestActorKind` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `ai_tester` value to `TestActorKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2427 -->
## 2026-10-17 · saw/SAW-2427

### Schemas
- added the `false-done` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2450 -->
## 2026-10-18 · saw/SAW-2450

### Schemas
- added the `test_case_change_set_conflict` value to `ApiErrorSlug`
- added the `test_case_change_set_closed` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2312 -->
## 2026-10-18 · saw/SAW-2312

### Schemas
- added the `test_plan_exists` value to `ApiErrorSlug`
- added the `test_plan_closed` value to `ApiErrorSlug`
- added the `test_plan_item_kind_unavailable` value to `ApiErrorSlug`
- added the `test_plan_item_invalid` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2303 -->
## 2026-10-18 · saw/SAW-2303

### `GET /projects/{projectId}/test-runs`
- added the required property `data/items/session` to the response with the `200` status

### `GET /test-runs/{testRunId}`
- added the required property `data/session` to the response with the `200` status

### `PATCH /test-runs/{testRunId}/manual`
- added the required property `data/session` to the response with the `200` status

### `POST /projects/{projectId}/test-runs/manual`
- added the required property `data/items/session` to the response with the `200` status

### `POST /projects/{projectId}/test-runs`
- added the required property `data/session` to the response with the `200` status

### `POST /test-runs/{testRunId}/close`
- added the required property `data/session` to the response with the `200` status

### `POST /test-runs/{testRunId}/reopen`
- added the required property `data/session` to the response with the `200` status

### Schemas
- added the `test_run_not_session` value to `ApiErrorSlug`
- added the `session` value to `TestRunSource`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2304 -->
## 2026-10-18 · saw/SAW-2304

### `DELETE /test-cases/{testCaseId}`
- endpoint added

### `DELETE /test-folders/{testFolderId}`
- endpoint added

### `DELETE /test-run-entries/{testRunEntryId}`
- endpoint added

### `GET /projects/{projectId}/test-case-fields`
- endpoint added

### `GET /projects/{projectId}/test-cases`
- endpoint added

### `GET /projects/{projectId}/test-configurations`
- endpoint added

### `GET /projects/{projectId}/test-environments`
- endpoint added

### `GET /projects/{projectId}/test-folders`
- endpoint added

### `GET /projects/{projectId}/test-runs`
- endpoint added

### `GET /test-cases/{testCaseId}/results`
- endpoint added

### `GET /test-cases/{testCaseId}/revisions/{revision}`
- endpoint added

### `GET /test-cases/{testCaseId}/revisions`
- endpoint added

### `GET /test-cases/{testCaseId}/run-entries`
- endpoint added

### `GET /test-cases/{testCaseId}`
- endpoint added

### `GET /test-run-entries/{testRunEntryId}`
- endpoint added

### `GET /test-runs/{testRunId}/coverage`
- endpoint added

### `GET /test-runs/{testRunId}/entries`
- endpoint added

### `GET /test-runs/{testRunId}/results`
- endpoint added

### `GET /test-runs/{testRunId}`
- endpoint added

### `PATCH /test-cases/{testCaseId}`
- endpoint added

### `PATCH /test-folders/{testFolderId}`
- endpoint added

### `PATCH /test-run-entries/{testRunEntryId}`
- endpoint added

### `PATCH /test-runs/{testRunId}/manual`
- endpoint added

### `POST /projects/{projectId}/test-cases/import`
- endpoint added

### `POST /projects/{projectId}/test-cases/move`
- endpoint added

### `POST /projects/{projectId}/test-cases`
- endpoint added

### `POST /projects/{projectId}/test-folders`
- endpoint added

### `POST /projects/{projectId}/test-runs/manual`
- endpoint added

### `POST /test-folders/{testFolderId}/move`
- endpoint added

### `POST /test-runs/{testRunId}/assign`
- endpoint added

### `POST /test-runs/{testRunId}/close`
- endpoint added

### `POST /test-runs/{testRunId}/entries`
- endpoint added

### `POST /test-runs/{testRunId}/reopen`
- endpoint added

### `POST /test-runs/{testRunId}/retest`
- endpoint added
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2295 -->
## 2026-10-18 · saw/SAW-2295

### Schemas
- added the `test_scan_not_ready` value to `ApiErrorSlug`
- added the `test_scan_stale` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2433 -->
## 2026-10-18 · saw/SAW-2433

### `GET /orgs/{orgId}/teams`
- endpoint added

### Schemas
- added the `sso_required` value to `AccountsApiErrorSlug`
- added the `recovery_unavailable` value to `AccountsApiErrorSlug`
- added the `require_sso_unavailable` value to `AccountsApiErrorSlug`
- added the `tracker_provider_unknown` value to `AccountsApiErrorSlug`
- added the `tracker_app_not_configured` value to `AccountsApiErrorSlug`
- added the `tracker_install_invalid_state` value to `AccountsApiErrorSlug`
- added the `tracker_install_expired` value to `AccountsApiErrorSlug`
- added the `tracker_install_failed` value to `AccountsApiErrorSlug`
- added the `tracker_account_not_chosen` value to `AccountsApiErrorSlug`
- added the `tracker_account_already_chosen` value to `AccountsApiErrorSlug`
- added the `tracker_org_app_not_found` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2434 -->
## 2026-10-18 · saw/SAW-2434

### `GET /epics/{epicId}`
- endpoint added

### `GET /epics`
- endpoint added

### `PATCH /epics/{epicId}`
- endpoint added

### `POST /epics`
- endpoint added
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2306 -->
## 2026-10-18 · saw/SAW-2306

### `POST /projects/{projectId}/test-runs`
- added the required property `data/launchId` to the response with the `200` status

### Schemas
- added the `test_launch_provider_unavailable` value to `ApiErrorSlug`
- added the `test_suite_no_launch_target` value to `ApiErrorSlug`
- added the `test_launch_not_cancellable` value to `ApiErrorSlug`
- added the `test_launch_target_invalid` value to `ApiErrorSlug`
- added the `test_launch_workflow_not_allowlisted` value to `ApiErrorSlug`
- `TestRunSource` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `machine` value to `TestRunSource`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2190 -->
## 2026-10-18 · saw/SAW-2190

### `DELETE /customer-requests/{requestId}`
- endpoint added

### `GET /customer-requests`
- endpoint added

### `GET /customer-statuses`
- endpoint added

### `GET /customer-tiers`
- endpoint added

### `GET /customers/{customerId}`
- endpoint added

### `GET /customers`
- endpoint added

### `PATCH /customer-requests/{requestId}`
- endpoint added

### `PATCH /customers/{customerId}`
- endpoint added

### `POST /customers`
- endpoint added

### `POST /tickets/{ticketId}/customer-requests`
- endpoint added

### `PUT /customers/external/{namespace}/{externalId}`
- endpoint added
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2236 -->
## 2026-10-18 · saw/SAW-2236

### `DELETE /projects/{projectId}/teams/{teamId}`
- endpoint added

### `GET /projects/{projectId}/teams`
- endpoint added

### `GET /teams/{teamId}/tickets`
- endpoint added

### `PUT /projects/{projectId}/teams/{teamId}`
- endpoint added
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2293 -->
## 2026-10-17 · saw/SAW-2293

### `POST /projects/{projectId}/test-runs`
- added the required property `data/manual` to the response with the `200` status
- added the required property `data/releaseId` to the response with the `200` status

### components
- removed the schema `TestRunData`
- removed the schema `TestRun`

### Schemas
- added the `test_case_revision_conflict` value to `ApiErrorSlug`
- added the `test_folder_not_empty` value to `ApiErrorSlug`
- added the `test_case_in_use` value to `ApiErrorSlug`
- added the `test_case_field_invalid` value to `ApiErrorSlug`
- added the `test_run_not_manual` value to `ApiErrorSlug`
- added the `test_run_closed` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2388 -->
## 2026-10-17 · saw/SAW-2388

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/completedAt` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/completedAt` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/completedAt` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/completedAt` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/completedAt` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/completedAt` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/completedAt` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/completedAt` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2060 -->
## 2026-10-17 · saw/SAW-2060

### Schemas
- `RequesterNoticeKind` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `reply` value to `RequesterNoticeKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2229 -->
## 2026-10-17 · saw/SAW-2229

### Schemas
- `TriageRuleField` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `team` value to `TriageRuleField`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2399 -->
## 2026-10-17 · saw/SAW-2399

### Schemas
- `CiStatus` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `skipped` value to `CiStatus`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2290 -->
## 2026-10-17 · saw/SAW-2290

### `POST /projects/{projectId}/test-runs`
- endpoint added
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2389 -->
## 2026-10-17 · saw/SAW-2389

### `POST /tickets`
- added the new optional request property `assigneeId`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2366 -->
## 2026-10-17 · saw/SAW-2366

### Schemas
- added the `mcp_sso_required` value to `AccountsApiErrorSlug`
- added the `mcp_mfa_required` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2179 -->
## 2026-10-17 · saw/SAW-2179

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/customers` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/customers` to the response with the `200` status

### `GET /tickets`
- added the new enum value `customerCount` to the `query` request parameter `sort`
- added the new enum value `customerRevenue` to the `query` request parameter `sort`
- added the optional property `data/items/items/customers` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/customers` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/customers` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/customers` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/customers` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/customers` to the response with the `200` status

### Schemas
- added the `customers_disabled` value to `ApiErrorSlug`
- added the `customer_not_found` value to `ApiErrorSlug`
- added the `customer_name_taken` value to `ApiErrorSlug`
- added the `customer_domain_taken` value to `ApiErrorSlug`
- added the `customer_domain_excluded` value to `ApiErrorSlug`
- added the `customer_merge_invalid` value to `ApiErrorSlug`
- added the `customer_status_not_found` value to `ApiErrorSlug`
- added the `customer_status_in_use` value to `ApiErrorSlug`
- added the `customer_status_last` value to `ApiErrorSlug`
- added the `customer_tier_not_found` value to `ApiErrorSlug`
- added the `customer_tier_in_use` value to `ApiErrorSlug`
- added the `customer_request_not_found` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2072 -->
## 2026-10-17 · saw/SAW-2072

### Schemas
- added the `ticket_has_live_work` value to `ApiErrorSlug`
- added the `ticket_has_open_pull_requests` value to `ApiErrorSlug`
- added the `ticket_has_sub_tickets` value to `ApiErrorSlug`
- `TriageDecision` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `route` value to `TriageDecision`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2089 -->
## 2026-10-17 · saw/SAW-2089

### `GET /tickets`
- added the new optional `query` request parameter `supportLink`

### Schemas
- added the `intercom` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2247 -->
## 2026-10-17 · saw/SAW-2247

### Schemas
- added the `mcp_disabled` value to `AccountsApiErrorSlug`
- added the `mcp_disabled_for_org` value to `AccountsApiErrorSlug`
- added the `mcp_grant_revoked` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2070 -->
## 2026-10-16 · saw/SAW-2070

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/form` to the response with the `200` status

### Schemas
- added the `request_form_not_found` value to `ApiErrorSlug`
- added the `request_form_slug_taken` value to `ApiErrorSlug`
- added the `request_form_captcha_failed` value to `ApiErrorSlug`
- added the `request_form_email_not_allowed` value to `ApiErrorSlug`
- added the `request_form_attachment_rejected` value to `ApiErrorSlug`
- added the `request_form_confirmation_expired` value to `ApiErrorSlug`
- added the `request_form_unavailable` value to `ApiErrorSlug`
- `TriageSourceKind` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `form` value to `TriageSourceKind`
- added the `form` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2224 -->
## 2026-10-16 · saw/SAW-2224

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/teamId` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/teamId` to the response with the `200` status

### `GET /tickets`
- added the new optional `query` request parameter `teamId`
- added the optional property `data/items/items/teamId` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the new optional request property `teamId`
- added the optional property `data/teamId` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/teamId` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/teamId` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/teamId` to the response with the `200` status

### `POST /tickets`
- added the new optional request property `teamId`
- added the optional property `data/teamId` to the response with the `200` status

### Schemas
- added the `invalid_team` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2235 -->
## 2026-10-16 · saw/SAW-2235

### Schemas
- added the `team_scim_managed` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2223 -->
## 2026-10-16 · saw/SAW-2223

### Schemas
- added the `key_taken` value to `AccountsApiErrorSlug`
- added the `team_invite_only` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2193 -->
## 2026-10-16 · saw/SAW-2193

### Schemas
- `TicketResolutionKind` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `planned` value to `TicketResolutionKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2069 -->
## 2026-10-16 · saw/SAW-2069

### `DELETE /tickets/{ticketId}/comments/{commentId}/reactions/{emoji}`
- added the optional property `data/outbound` to the response with the `200` status

### `GET /projects/{projectId}`
- added the optional property `data/triage/replyByEmail` to the response with the `200` status
- added the optional property `data/triage/templates` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/triage/replyByEmail` to the response with the `200` status
- added the optional property `data/items/triage/templates` to the response with the `200` status

### `GET /tickets/{ticketId}/comments`
- added the optional property `data/items/outbound` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `PATCH /tickets/{ticketId}/comments/{commentId}`
- added the optional property `data/outbound` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `POST /tickets/{ticketId}/comments`
- added the optional property `data/outbound` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterAddress` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannelReason` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/requesterChannel` to the response with the `200` status

### `PUT /tickets/{ticketId}/comments/{commentId}/reactions/{emoji}`
- added the optional property `data/outbound` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2064 -->
## 2026-10-16 · saw/SAW-2064

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/items/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `GET /tickets`
- added the new enum value `rule-decided` to the `query` request parameter `triage`
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/items/items/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/appliedRules` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/decidedByRule` to the response with the `200` status
- added the optional property `data/triage/oneOf[#/components/schemas/TicketTriage]/ownerId` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2063 -->
## 2026-10-16 · saw/SAW-2063

### `GET /projects/{projectId}`
- added the optional property `data/triageBriefSettings` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/triageBriefSettings` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/triageBrief` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/triageBrief` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/triageBrief` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/triageBrief` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/triageBrief` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/triageBrief` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/triageBrief` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/triageBrief` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2134 -->
## 2026-10-15 · saw/SAW-2134

### `GET /projects/{projectId}`
- added the optional property `data/agentOrgVariables` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/agentOrgVariables` to the response with the `200` status

### Schemas
- added the `agent_org_variables_disabled` value to `ApiErrorSlug`
- added the `github_variables_permission_missing` value to `ApiErrorSlug`
- added the `github_variable_out_of_scope` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2054 -->
## 2026-10-15 · saw/SAW-2054

### `GET /projects/{projectId}`
- added the optional property `data/triage` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/triage` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/triageReports` to the response with the `200` status
- added the optional property `data/items/triage` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/triageReports` to the response with the `200` status
- added the optional property `data/triage` to the response with the `200` status

### `GET /tickets`
- added the new optional `query` request parameter `triage`
- added the optional property `data/items/items/triageReports` to the response with the `200` status
- added the optional property `data/items/items/triage` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/triageReports` to the response with the `200` status
- added the optional property `data/triage` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/triageReports` to the response with the `200` status
- added the optional property `data/triage` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/triageReports` to the response with the `200` status
- added the optional property `data/triage` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/triageReports` to the response with the `200` status
- added the optional property `data/triage` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/triageReports` to the response with the `200` status
- added the optional property `data/triage` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2132 -->
## 2026-10-15 · saw/SAW-2132

### `GET /tickets`
- added the new optional `query` request parameter `ticketId`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-2075 -->
## 2026-10-15 · saw/SAW-2075

### Schemas
- added the `mission_run_live` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1718 -->
## 2026-10-14 · saw/SAW-1718

### Schemas
- added the `not_a_member` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1822 -->
## 2026-10-15 · saw/SAW-1822

### Schemas
- added the `mfa_required` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1958 -->
## 2026-10-14 · saw/SAW-1958

### Schemas
- added the `webrtc-fallback` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1908 -->
## 2026-10-14 · saw/SAW-1908

### Schemas
- added the `docs_collab_disabled` value to `ApiErrorSlug`
- added the `docs_collab_unavailable` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1753 -->
## 2026-10-14 · saw/SAW-1753

### Schemas
- added the `agents_unavailable` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1762 -->
## 2026-10-14 · saw/SAW-1762

### Schemas
- added the `request_in_progress` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1117 -->
## 2026-10-14 · saw/SAW-1117

### Schemas
- added the `doc_change_set_conflict` value to `ApiErrorSlug`
- added the `doc_change_set_closed` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1745 -->
## 2026-10-14 · saw/SAW-1745

### `GET /projects/{projectId}`
- added the optional property `data/mergeFromChat` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/mergeFromChat` to the response with the `200` status

### Schemas
- added the `slack` value to `ExternalSourceKind`
- added the `discord` value to `ExternalSourceKind`
- added the `teams` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1831 -->
## 2026-10-13 · saw/SAW-1831

### `GET /projects/{projectId}`
- added the optional property `data/agentRepoRegistration` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/agentRepoRegistration` to the response with the `200` status

### Schemas
- added the `agent_repo_registration_disabled` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1813 -->
## 2026-10-13 · saw/SAW-1813

### `POST /auth/token/api-key`
- added the optional property `details` to the response with the `401` status
- added the optional property `details` to the response with the `422` status
- added the optional property `details` to the response with the `429` status
- added the optional property `details` to the response with the `default` status

### Schemas
- added the `member_limit_exceeded` value to `AccountsApiErrorSlug`
- added the `domain_already_verified` value to `AccountsApiErrorSlug`
- added the `domain_not_eligible` value to `AccountsApiErrorSlug`
- added the `domain_limit_exceeded` value to `AccountsApiErrorSlug`
- added the `entitlement_required` value to `AccountsApiErrorSlug`
- added the `sso_connection_invalid` value to `AccountsApiErrorSlug`
- added the `domain_not_allowed` value to `AccountsApiErrorSlug`
- added the `identity_conflict` value to `AccountsApiErrorSlug`
- added the `sso_not_provisioned` value to `AccountsApiErrorSlug`
- added the `sso_connection_inactive` value to `AccountsApiErrorSlug`
- added the `sso_response_invalid` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1510 -->
## 2026-10-13 · saw/SAW-1510

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/repoWork/items/prs/items/requestedReviewers` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1641 -->
## 2026-10-13 · saw/SAW-1641

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/trackerSync` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/trackerSync` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/trackerSync` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/trackerSync` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/trackerSync` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/trackerSync` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/trackerSync` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/trackerSync` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1743 -->
## 2026-10-13 · saw/SAW-1743

### Schemas
- added the `chat_grant_revoked` value to `AccountsApiErrorSlug`
- added the `chat_identity_mismatch` value to `AccountsApiErrorSlug`
- added the `chat_nonce_replayed` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1720 -->
## 2026-10-13 · saw/SAW-1720

### Schemas
- added the `doc_space_access_forbidden` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1643 -->
## 2026-10-13 · saw/SAW-1643

### Schemas
- `LinkedGithubIssueLinkedBy` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `import` value to `LinkedGithubIssueLinkedBy`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1633 -->
## 2026-10-13 · saw/SAW-1633

### Schemas
- added the `tracker_credential_not_found` value to `AccountsApiErrorSlug`
- added the `tracker_credential_revoked` value to `AccountsApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1721 -->
## 2026-10-13 · saw/SAW-1721

### `GET /projects/{projectId}`
- removed the optional property `data/answerDecisionsOverride` from the response with the `200` status
- removed the optional property `data/approveOwnPrsOverride` from the response with the `200` status
- removed the optional property `data/mergeOwnPrsOverride` from the response with the `200` status
- removed the optional property `data/moveCardsToDoneOverride` from the response with the `200` status
- removed the optional property `data/openBuildArcOverride` from the response with the `200` status
- removed the optional property `data/readyOwnPrsOverride` from the response with the `200` status
- removed the optional property `data/startTicketsOverride` from the response with the `200` status

### `GET /projects`
- removed the optional property `data/items/answerDecisionsOverride` from the response with the `200` status
- removed the optional property `data/items/approveOwnPrsOverride` from the response with the `200` status
- removed the optional property `data/items/mergeOwnPrsOverride` from the response with the `200` status
- removed the optional property `data/items/moveCardsToDoneOverride` from the response with the `200` status
- removed the optional property `data/items/openBuildArcOverride` from the response with the `200` status
- removed the optional property `data/items/readyOwnPrsOverride` from the response with the `200` status
- removed the optional property `data/items/startTicketsOverride` from the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1108 -->
## 2026-10-12 · saw/SAW-1108

### Schemas
- added the `doc_revision_conflict` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1726 -->
## 2026-10-12 · saw/SAW-1726

### Schemas
- added the `github_repo_create_permission_missing` value to `ApiErrorSlug`
- added the `github_user_authorization_required` value to `ApiErrorSlug`
- added the `github_repo_create_forbidden` value to `ApiErrorSlug`
- added the `github_repo_name_taken` value to `ApiErrorSlug`
- added the `github_repo_create_unavailable` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1128 -->
## 2026-10-12 · saw/SAW-1128

### Schemas
- added the `entitlement_required` value to `ApiErrorSlug`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1629 -->
## 2026-10-12 · saw/SAW-1629

### `DELETE /tickets/{ticketId}/comments/{commentId}/reactions/{emoji}`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `GET /tickets/{ticketId}/comments`
- added the optional property `data/items/source/externalKey` to the response with the `200` status
- added the optional property `data/items/source/url` to the response with the `200` status

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/source/externalKey` to the response with the `200` status
- added the optional property `data/items/source/url` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/source/externalKey` to the response with the `200` status
- added the optional property `data/items/items/source/url` to the response with the `200` status

### `PATCH /tickets/{ticketId}/comments/{commentId}`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `POST /tickets/{ticketId}/comments`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### `PUT /tickets/{ticketId}/comments/{commentId}/reactions/{emoji}`
- added the optional property `data/source/externalKey` to the response with the `200` status
- added the optional property `data/source/url` to the response with the `200` status

### Schemas
- added the `tracker_connection_not_found` value to `ApiErrorSlug`
- added the `tracker_item_not_found` value to `ApiErrorSlug`
- added the `tracker_item_error_not_found` value to `ApiErrorSlug`
- added the `tracker_connection_invalid_state` value to `ApiErrorSlug`
- added the `tracker_connection_ended` value to `ApiErrorSlug`
- added the `tracker_push_connection_exists` value to `ApiErrorSlug`
- added the `tracker_item_error_not_open` value to `ApiErrorSlug`
- added the `tracker_scope_required` value to `ApiErrorSlug`
- added the `tracker_credential_missing` value to `ApiErrorSlug`
- added the `tracker_mapping_incomplete` value to `ApiErrorSlug`
- added the `tracker_sync_window_invalid` value to `ApiErrorSlug`
- added the `jira` value to `ExternalSourceKind`
- added the `linear` value to `ExternalSourceKind`
- added the `azure-devops` value to `ExternalSourceKind`
- added the `github` value to `ExternalSourceKind`
- added the `gitlab` value to `ExternalSourceKind`
- added the `asana` value to `ExternalSourceKind`
- added the `trello` value to `ExternalSourceKind`
- added the `file` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1668 -->
## 2026-10-12 · saw/SAW-1668

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/reconciledUnfinished` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/reconciledUnfinished` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/reconciledUnfinished` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/reconciledUnfinished` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/reconciledUnfinished` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/reconciledUnfinished` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/reconciledUnfinished` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/reconciledUnfinished` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1682 -->
## 2026-10-12 · saw/SAW-1682

### Schemas
- `ExternalSourceKind` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `user-feedback` value to `ExternalSourceKind`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1660 -->
## 2026-10-12 · saw/SAW-1660

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/shippingSince` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/shippingSince` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/shippingSince` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/shippingSince` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/shippingSince` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/shippingSince` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/shippingSince` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/shippingSince` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1669 -->
## 2026-10-12 · saw/SAW-1669

### `GET /projects/{projectId}`
- added the optional property `data/githubIssuesEnabledOverride` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/githubIssuesEnabledOverride` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1661 -->
## 2026-10-12 · saw/SAW-1661

### `GET /tickets`
- added the new optional `query` request parameter `facet`
- for the `query` request parameter `assigneeId`, the `type` was widened from `string` to `array<string>`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1533 -->
## 2026-10-12 · saw/SAW-1533

### `GET /projects/{projectId}`
- added the optional property `data/answerDecisionsOverride` to the response with the `200` status
- added the optional property `data/openBuildArcOverride` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/answerDecisionsOverride` to the response with the `200` status
- added the optional property `data/items/openBuildArcOverride` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1520 -->
## 2026-10-12 · saw/SAW-1520

### `GET /projects/{projectId}`
- added the optional property `data/deleteClosedBranchesOverride` to the response with the `200` status
- added the optional property `data/deleteMergedBranchesOverride` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/deleteClosedBranchesOverride` to the response with the `200` status
- added the optional property `data/items/deleteMergedBranchesOverride` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1518 -->
## 2026-10-11 · saw/SAW-1518

### `GET /projects/{projectId}`
- added the optional property `data/effectiveWorkflowDispatchAllowlist` to the response with the `200` status
- added the optional property `data/workflowDispatchAllowlist` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/effectiveWorkflowDispatchAllowlist` to the response with the `200` status
- added the optional property `data/items/workflowDispatchAllowlist` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1602 -->
## 2026-10-11 · saw/SAW-1602

### Schemas
- `ApiErrorSlug` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
- added the `job_token_wrong_ticket` value to `ApiErrorSlug`
- added the `job_token_not_admitted` value to `ApiErrorSlug`
- `AccountsApiErrorSlug` is now an open set (`x-extensible-enum`): a later release can add a value, so treat one you don't recognize as a generic failure
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1516 -->
## 2026-10-11 · saw/SAW-1516

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/repoWork/items/openedPr` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/repoWork/items/openedPr` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/repoWork/items/openedPr` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/repoWork/items/openedPr` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/repoWork/items/openedPr` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/repoWork/items/openedPr` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/repoWork/items/openedPr` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/repoWork/items/openedPr` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1531 -->
## 2026-10-11 · saw/SAW-1531

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/linkedIssues` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/linkedIssues` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/linkedIssues` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/linkedIssues` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/linkedIssues` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/linkedIssues` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/linkedIssues` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/linkedIssues` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1484 -->
## 2026-10-11 · saw/SAW-1484

### `GET /projects/{projectId}`
- added the optional property `data/startTicketsOverride` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/startTicketsOverride` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1470 -->
## 2026-10-10 · saw/SAW-1470

### `GET /projects/{projectId}`
- added the optional property `data/missionSkipAllowedOverride` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/missionSkipAllowedOverride` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1377 -->
## 2026-10-09 · saw/SAW-1377

### `GET /projects/{projectId}`
- added the optional property `data/readyOwnPrsOverride` to the response with the `200` status
- removed the optional property `data/prReadyPolicyOverride` from the response with the `200` status

### `GET /projects`
- added the optional property `data/items/readyOwnPrsOverride` to the response with the `200` status
- removed the optional property `data/items/prReadyPolicyOverride` from the response with the `200` status

### components
- removed the schema `PrReadyPolicy`
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1375 -->
## 2026-10-09 · saw/SAW-1375

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/ciGateParked/oneOf[#/components/schemas/TicketCiGateParked]/cause` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1353 -->
## 2026-10-09 · saw/SAW-1353

### `GET /tickets/{ticketId}/sub-tickets`
- added the optional property `data/items/resolution` to the response with the `200` status

### `GET /tickets/{ticketId}`
- added the optional property `data/resolution` to the response with the `200` status

### `GET /tickets`
- added the optional property `data/items/items/resolution` to the response with the `200` status

### `PATCH /tickets/{ticketId}`
- added the optional property `data/resolution` to the response with the `200` status

### `POST /tickets/{ticketId}/archive`
- added the optional property `data/resolution` to the response with the `200` status

### `POST /tickets/{ticketId}/move`
- added the optional property `data/resolution` to the response with the `200` status

### `POST /tickets/{ticketId}/unarchive`
- added the optional property `data/resolution` to the response with the `200` status

### `POST /tickets`
- added the optional property `data/resolution` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1314 -->
## 2026-10-09 · saw/SAW-1314

### `GET /projects/{projectId}`
- added the optional property `data/branching` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/branching` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1212 -->
## 2026-10-09 · saw/SAW-1212

### `GET /projects/{projectId}`
- removed the `auto_when_green` enum value from the `data/mergeAuthorityOverride/oneOf[#/components/schemas/MergeAuthority]/` response property for the response status `200`
- removed the optional property `data/autoApproveOverride` from the response with the `200` status

### `GET /projects`
- removed the `auto_when_green` enum value from the `data/items/mergeAuthorityOverride/oneOf[#/components/schemas/MergeAuthority]/` response property for the response status `200`
- removed the optional property `data/items/autoApproveOverride` from the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1211 -->
## 2026-10-09 · saw/SAW-1211

### `GET /projects/{projectId}`
- added the optional property `data/approveOwnPrsOverride` to the response with the `200` status
- added the optional property `data/mergeOwnPrsOverride` to the response with the `200` status
- added the optional property `data/moveCardsToDoneOverride` to the response with the `200` status

### `GET /projects`
- added the optional property `data/items/approveOwnPrsOverride` to the response with the `200` status
- added the optional property `data/items/mergeOwnPrsOverride` to the response with the `200` status
- added the optional property `data/items/moveCardsToDoneOverride` to the response with the `200` status
<!-- /public-changelog -->

<!-- public-changelog:saw/SAW-1286 -->
## 2026-10-08 · saw/SAW-1286

### `DELETE /tickets/{ticketId}/comments/{commentId}/reactions/{emoji}`
- endpoint added

### `DELETE /tickets/{ticketId}/comments/{commentId}`
- endpoint added

### `DELETE /tickets/{ticketId}/relations/{relationId}`
- endpoint added

### `DELETE /tickets/{ticketId}`
- endpoint added

### `GET /cycles/{cycleId}`
- endpoint added

### `GET /cycles`
- endpoint added

### `GET /labels`
- endpoint added

### `GET /projects/{projectId}`
- endpoint added

### `GET /projects`
- endpoint added

### `GET /statuses`
- endpoint added

### `GET /tickets/{ticketId}/comments`
- endpoint added

### `GET /tickets/{ticketId}/relations`
- endpoint added

### `GET /tickets/{ticketId}/sub-tickets`
- endpoint added

### `GET /tickets/{ticketId}`
- endpoint added

### `GET /tickets`
- endpoint added

### `GET /users`
- endpoint added

### `PATCH /tickets/{ticketId}/comments/{commentId}`
- endpoint added

### `PATCH /tickets/{ticketId}`
- endpoint added

### `POST /auth/token/api-key`
- endpoint added

### `POST /labels`
- endpoint added

### `POST /tickets/{ticketId}/archive`
- endpoint added

### `POST /tickets/{ticketId}/comments`
- endpoint added

### `POST /tickets/{ticketId}/move`
- endpoint added

### `POST /tickets/{ticketId}/relations`
- endpoint added

### `POST /tickets/{ticketId}/unarchive`
- endpoint added

### `POST /tickets`
- endpoint added

### `PUT /tickets/{ticketId}/comments/{commentId}/reactions/{emoji}`
- endpoint added

### components
- the component security scheme `bearerAuth` was added

### security
- the security scheme `bearerAuth` was added to the API
<!-- /public-changelog -->

Source: https://docs.bydawn.com/changelog/
